关于asp.net中dataList控件的使用学习记录
2012-04-27 16:52
661 查看
一直在做winfrom开发,把以前接触过的BS知识都忘记了。某朋友想让我帮他弄个留言板。。仔细想了想,伸手就开始写代码。目标很明确,用Datalist读取就是了。。
建立了两张表,一个是留言表,一个是回复表,他们是一对多的关系... 我开始想的很简单,先读取留言表,直接绑定到datalist上就OK了!
结果显示的正常...我添加的留言都能显示出来 如图:
可是到了显示对应回复的时候,我傻眼了,不过想到了嵌套datalist 不过对于怎么查对应的数据是一点思路没有!而且嵌套的datalist是在编辑器中直接找不到的..
然后百度,http://blog.csdn.net/qinyun118/article/details/4981879 找了这篇帖子。。有思路了。。原来是可以在datalist中加DataKeyField的,一般就是该表中的主键,如代码所示:
加上这了 剩下的就好说了 思路就是在datalist的ItemDataBound事件去绑定他的子datalist。
上面那句代码可以找到你的子datalist 然后可以通过之前设置的datakey来找到对应的唯一标识:
然后就可以进行你想做的操作了 绑定数据之类的!!
就是这样,,然后在看下读取数据的效果:
没做什么美化 只是想实现功能。。对应的回复数据也读出来了!
至于回复,先说按钮,按钮有一个
设置完CommandArgument后 在后台代码通过ItemCommand事件来处理代码
这样就可以了!
主要是想自己记录下,以便以后使用的时候可以更快的找到思路,传上来或许也可以帮到跟我一样的菜鸟!
建立了两张表,一个是留言表,一个是回复表,他们是一对多的关系... 我开始想的很简单,先读取留言表,直接绑定到datalist上就OK了!
/// <summary> /// 获取所有的留言 /// </summary> private void GetAllMessage() { string sql = "select * from Message";//Messgae为留言表 DataList1.DataSource = DBHelper.GetTable(sql, CommandType.Text); DataList1.DataBind(); }
结果显示的正常...我添加的留言都能显示出来 如图:
可是到了显示对应回复的时候,我傻眼了,不过想到了嵌套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();
然后就可以进行你想做的操作了 绑定数据之类的!!
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { DataList dlDir2 = (DataList)e.Item.FindControl("DataList2"); string typeId = DataList1.DataKeys[e.Item.ItemIndex].ToString().Trim(); string sql = "select * from Rmessage where MessageId='" + typeId + "'"; dlDir2.DataSource = DBHelper.GetTable(sql, CommandType.Text); dlDir2.DataBind(); } }
就是这样,,然后在看下读取数据的效果:
没做什么美化 只是想实现功能。。对应的回复数据也读出来了!
至于回复,先说按钮,按钮有一个
<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中的AJAX学习记录之三 体会UpdateMode属性及使用UpdateTriggers
- ASP.NET 2.0中DataList控件与GridView控件的使用实例
- 关于ASP.NET中使用服务器控件影响效率的问题
- ASP.net 中的AJAX学习记录之四 updateProgress控件的简单用法
- ASP.NET学习:DataList的使用
- ASP.net中的AJAX学习记录五:动态加载用户控件(Calendar控件为例)
- ASP.NET中DataList控件和AspNetPager控件的组合使用并实现分页
- ASP.NET学习笔记[2] - 关于使用Master.Page的几点注意事项
- ASP.net中的AJAX学习记录五:动态加载用户控件(Calendar控件为例)
- asp.net学习之DataList控件
- ASP.NET控件使用——Button中关于CommandName 和 CommandArgument 的理解?????
- ASP.NET MVC 学习心得 (3) – 怎样使用服务器控件
- 关于ASP.NET控件方面的学习(恢复版)
- ASP.NET学习:DataList的使用
- ASP.NET学习笔记--自定义验证控件的使用
- 【转】ASP.NET关于Login控件使用
- asp.net基础学习之控件的使用方法
- Scott Mitchell 的ASP.NET 2.0数据教程之三十一::使用DataList来一行显示多条记录
- ASP.NET关于Login控件使用
- 关于asp.net3.5(S2008)中ajaxcontroltoolkit控件不能使用的解决办法