关于asp.net中dataList控件的使用学习记录

摘要:
目标非常明确,只需使用Datalist阅读即可。。而嵌套的数据列表无法直接在编辑器中找到。。然后百度,http://blog.csdn.net/qinyun118/article/details/4981879找到了这篇文章。以前,DataKeyField可以添加到数据列表中,它通常是表的主键,如代码所示:其目的是将其子数据列表绑定到数据列表的ItemDataBoud事件。1protectedvoidDataList1_ItemDataBound2{3if4{5DataListdlDir2=e.Item.FindControl;6stringtypeId=DataList1.DataKeys[e.Item.ItemIndex].ToString().Trim();7stringsql=“select*fromRmessagewhereMessageId='”+typeId+“'”;8dlDir2.DataSource=DBHelper.GetTable;9dlDir2.DataBind());10}11}这是读取数据的方式。看看阅读数据的效果:没有美化,只是为了实现功能。至于回复,我们先来谈谈按钮。按钮有一个设置CommandArgument后,后台代码通过ItemCommand事件_ ItemCommand处理代码protectedvoidDataList1{if{TextBoxtxtContent=e.Item.FindControl;stringsql=“insertintoRmessagevalues”;intcount=0;try{count=DBHelper.GetCount;}catch{Response.Write;}如果(计数!

一直在做winfrom开发,把以前接触过的BS知识都忘记了。某朋友想让我帮他弄个留言板。。仔细想了想,伸手就开始写代码。目标很明确,用Datalist读取就是了。。

建立了两张表,一个是留言表,一个是回复表,他们是一对多的关系... 我开始想的很简单,先读取留言表,直接绑定到datalist上就OK了!

1         /// <summary>
2         /// 获取所有的留言
3         /// </summary>
4         private void GetAllMessage() {
5             string sql = "select * from Message";//Messgae为留言表
6             DataList1.DataSource = DBHelper.GetTable(sql,      CommandType.Text);
7             DataList1.DataBind();
8         }

结果显示的正常...我添加的留言都能显示出来  如图:

关于asp.net中dataList控件的使用学习记录第1张

可是到了显示对应回复的时候,我傻眼了,不过想到了嵌套datalist 不过对于怎么查对应的数据是一点思路没有!而且嵌套的datalist是在编辑器中直接找不到的..

然后百度,http://blog.csdn.net/qinyun118/article/details/4981879 找了这篇帖子。。有思路了。。原来是可以在datalist中加DataKeyField的,一般就是该表中的主键,如代码所示:

<asp:DataList ID="DataList1" runat="server" 
                    onitemdatabound="DataList1_ItemDataBound"  DataKeyField="Id" onitemcommand="DataList1_ItemCommand">

 加上这了 剩下的就好说了 思路就是在datalist的ItemDataBound事件去绑定他的子datalist。 

DataList dlDir2 = (DataList)e.Item.FindControl("DataList2");

上面那句代码可以找到你的子datalist 然后可以通过之前设置的datakey来找到对应的唯一标识:

string typeId = DataList1.DataKeys[e.Item.ItemIndex].ToString().Trim();

然后就可以进行你想做的操作了 绑定数据之类的!!

 1 protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
 2         {
 3             if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
 4             {
 5                 DataList dlDir2 = (DataList)e.Item.FindControl("DataList2");
 6                 string typeId = DataList1.DataKeys[e.Item.ItemIndex].ToString().Trim();
 7                 string sql = "select * from Rmessage where MessageId='" + typeId + "'";
 8                 dlDir2.DataSource = DBHelper.GetTable(sql, CommandType.Text);
 9                 dlDir2.DataBind();
10             }
11         }

就是这样,,然后在看下读取数据的效果:

关于asp.net中dataList控件的使用学习记录第2张

没做什么美化 只是想实现功能。。对应的回复数据也读出来了!

至于回复,先说按钮,按钮有一个

<asp:Button ID="replay" runat="server" Text="回复" CommandArgument="Add" />

设置完CommandArgument后 在后台代码通过ItemCommand事件来处理代码 

protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
        {
            if (e.CommandArgument == "Add") {
                TextBox txtContent = (TextBox)e.Item.FindControl("txtReCon");
                string sql = "insert into Rmessage values('"+DataList1.DataKeys[e.Item.ItemIndex]+"','sulei','"+txtContent.Text.Trim()+"','"+DateTime.Now.ToString("yyyy-MM-dd hh:mm")+"')";
                int count = 0;
                try
                {
                    count = DBHelper.GetCount(sql, CommandType.Text);
                }
                catch (Exception ex)
                {
                    Response.Write("<script>alert('"+ex.Message+"')</script>");
                }
                if (count != 0) {
                    Response.Write("<script>alert('回复成功')</script>");
                }
            }

这样就可以了!

主要是想自己记录下,以便以后使用的时候可以更快的找到思路,传上来或许也可以帮到跟我一样的菜鸟!

免责声明:文章转载自《关于asp.net中dataList控件的使用学习记录》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇无法删除DLL文件解决方法(转)C#中对EXCEL保存的SAVEAS方法说明下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

JAVA中初始化ArrayList的三种方式

2列表1.添加(“苹果”);3列表1.添加(“香蕉”);4列表1.添加(“橙色”);2、 使用列表进行初始化。(Arrays.asList(“apple”,它直接为初始化提供列表值,“orange”));提供给list3进行初始化。list4=newArrayList&lt;(){2{3add(“苹果”);...

[npm CLI文档]配置NPM:package-lock.json

包装锁。json和npm shrink-wrap json将两个文件以相同的格式进行比较,并在项目的根目录中执行类似的功能。不同之处在于包锁Json无法发布,如果在根目录之外的任何位置找到它,就会被忽略。隐藏的锁定文件避免重复处理nodes_Modules文件夹。从v7开始,npm使用node_modules/.package锁。json中的“隐藏”锁文件。...

QSS基础-设置控件样式

1.QSS基础-设置类似控件的样式“QSS基础:QtStyleSheetQt样式表用于设置控件的样式和样式(例如控件的背景色、字体颜色、字体大小等)。功能与CSS相似。功能类似。“”从PyQt5.Qt重新导入*从PyQt5.QtGuidimport*从PyQt5.QtWidgetsimport*importsysclassBasicQSS(QWidget):...

mysql之排序查询

高级文章目录3:排序查询功能:1.按单个字段排序案例1:查询员工信息,要求工资从高到低排序2.为排序添加筛选条件案例1:部门编号˃=90的员工信息,按员工编号降序排序案例2:部门编号˃=90的人员信息,按输入时间排序。按表达式排序案例1:按年薪显示员工信息和年薪4按别名排序案例1按年薪升序查询员工信息5.按函数(长度)排序案例1查询员工姓名并按姓名长度减少...

IDEA(MAC) 快捷键

从日食到IDEA;从Windows到MAC,我不习惯录制一些日常使用的快捷键。1.格式代码命令+alt+L2。导出包alt+entercontrol+alt+O3。自动生成此类型的对象命令+alt+V4。复制命令行+d5。上下移动一行代码shift+alt+上/下箭头6。上下移动代码Shift+Command+上下键6。生成foreacher7。生成列表遍历...

Nohup后台运行程序

场景:我现在需要跑脚本批量处理一些数据,但是我又不想盯着控制台看这个脚本的输出结果,想把这些输出结果记录到一个日志文件里面方案:可以使用Linux的nohup命令,把进程挂起,后台执行用法:$nohupXXXXXX.sh˃˃/runtime/deletedata.log&运行结果(这个数字是进程号):˃˃[1]13120有时候可能会报一个提示:$no...