ASP.NET中Repeater控件使用dataset的Relations属性建立关系提取节点
今天使用了Repeater控件结合dataset的Relations关系,做了一个节点级联,把他分享给大家,下面是效果图:
首先说下relations属性,DataSet 对象中的 Relations 属性。此属性用于建立表链接并允许父类访问到子类的关系的集合。Relations 属性是 System.Data.DataRelationCollection 类的实例
前台aspx代码:
<asp:Repeater ID="menutree" runat="server">
<ItemTemplate>
<div class="Highlight" style="font-weight: bold;">
<input id="menuItem" name="menuItem" type="checkbox" value="<%# Eval("ID") %>" onclick="chkedvalue()" />
<%# Eval("menuName") %>
</div>
<div>
<asp:Repeater ID="menuson" runat="server" DataSource=’<%#((DataRowView)Container.DataItem).Row.GetChildRows("myrelations") %>’>
<ItemTemplate>
<input id="menuItem" name="menuItem" type="checkbox" value="<%# Eval("[\"ID\"]") %>"
onclick="chkedvalue()" />
<%# Eval("[\"menuName\"]") %>
</ItemTemplate>
</asp:Repeater>
</div>
</ItemTemplate>
</asp:Repeater>
后台aspx.cs代码:
string sqlmenu = "select * from adminmenu where parentID=0 order by rootID"; //sql语句
string sqlmenuson = "select * from adminmenu where parentID>0 order by rootID"; //sql语句
DataSet ds = new DataSet(); //新建数据集ds
OleDbDataAdapter damenu = OleDbHelper.ExecuteDataAdapter(CommandType.Text, sqlmenu); //新建适配器damenu
OleDbDataAdapter damenuson = OleDbHelper.ExecuteDataAdapter(CommandType.Text, sqlmenuson); //新建适配器damenuson
damenu.Fill(ds, "damenu"); //分别填充数据集的damenu表和damenuson
damenuson.Fill(ds, "damenuson");
ds.Relations.Add("myrelations", ds.Tables["damenu"].Columns["ID"], ds.Tables["damenuson"].Columns["parentID"]); //利用relations关系属性,建立连接,将数据填充至myrelations表中。这里通过第二项的damenu表中的id与第三项的damenuson表中的parentID建立连接获得数据。
menutree.DataSource = ds.Tables["damenu"]; //进行数据源绑定
menutree.DataBind();
这里,为了更方便有些初学者的理解,我把数据库的adminmenu表结构简单用表格写出来,如果还不明白直接留言:
id | menuName | parentID |
1 | 系统设置 | 0 |
2 | 基本设置 | 1 |
3 | 用户管理 | 1 |
4 | 公司介绍 | 0 |
注:relations属性不仅可以在repeater控件中使用,还可以在datalist与detailsview控件中使用,方法一样。。。
这只是最基本的,其实通过这个实例,可以延伸实现很多效果,比如:点击系统设置,下面的隐藏或展开等等。。。
本博文章基本上属于原创或收集整理,都是心血结晶。
欢迎转载分享,转载请注明出处,谢谢!
本文地址:ASP.NET中Repeater控件使用dataset的Relations属性建立关系提取节点
一条评论
详细,借鉴了