概述:在项目中做权限的时候使用到了Repeater的嵌套(像for循环嵌套),如图:
这里的功能页面和功能权限都是通过repeater遍历出来的,表示的是一个功能页面中包含多个功能权限,是个一对多的关系。具体的权限设计这里不说明,主要是说如何进行repeater嵌套的。具体步骤如下:
第一步:定义俩个方法,一个是绑定功能页面的方法,第二个是根据功能页面id查询出对应功能权限的方法。代码:
//定义一个绑定repPage的方法
private void BindRepeaterPage()
{
//调用方法得到数据
DataTable dt = 调用方法省略;
repPage.DataSource = dt;
repPage.DataBind();
}
//定义一个绑定repPower的方法,传入功能页面的id
protected DataTable BindREpeaterPower(string ss_id)
{
//调用方法得到数据
DataTable dt =调用方法省略;
return dt
}
第二步:定义两个嵌套的repeater,如上代码所示,repPage表示功能页面,还有一个是在之后页面上定义的repPower,代码:
<table width="100%">
<tr>
<td width="20%">
功能页面
</td>
<td>
功能权限
</td>
</tr>
<asp:Repeater ID="repPage" runat="server">
<ItemTemplate>
<tr>
<td width="20%">
<%# Eval("功能页面名称") %>
</td>
<td>
<table width="100%">
<tr>
<asp:Repeater ID="repPowers" runat="server" DataSource='<%# BindREpeaterPower(功能页面id) %>'>
<ItemTemplate>
<td>
<input type="checkbox" name="power" /><%# Eval("功能权限名称") %>
</td> </ItemTemplate>
</asp:Repeater>
</tr>
</table>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
注:对于遍历出的checkedbox的选择后的值可以使用js加一个hidfield来获得,这里就不详细说明了,主要说明repeater的套用。