界面如图:
此图片我用全选复选框时模板列中只能选择第一行的数据.
其中浏览列后的是权限列表,可显示的只有最后一行的权限"新增,编辑,删除",事实上其他模块的权限是不同的.
我后台RowDataBound事件的代码如下:
protected override void Gr_RowDataBound(object sender, GridRowEventArgs e)
{
System.Web.UI.WebControls.CheckBoxList ddlOthers = (System.Web.UI.WebControls.CheckBoxList)gr_Base.Rows[e.RowIndex].FindControl("ddlOthers");
RoleModulePower row = e.DataItem as RoleModulePower;
string moduleName = row.ModuleName;
List<string> otherPowerNames = ModulePowerTypeHelper.GetModuleOtherPowerTypeDic(moduleName);
foreach (string powerName in otherPowerNames)
{
// powerName = "ChangePassword" moduleName = "CoreUser"
System.Web.UI.WebControls.ListItem item = new System.Web.UI.WebControls.ListItem();
item.Value = powerName;
item.Text = ModulePowerTypeHelper.GetTitle(moduleName, powerName);
item.Selected = row.OtherPowers[powerName].Value<bool>();
ddlOthers.Items.Add(item);
}
}
前台:
<x:Grid ID="gr_Base" ShowHeader="False" runat="server"
EnableRowNumber="true" AllowSorting="true" PageSize="20" ShowBorder="true" AllowPaging="true"
EnableTextSelection="true" IsDatabasePaging="true"
DataKeyNames="Id,ModuleName" AutoScroll="true" EnableRowDoubleClick="true">
<Columns>
<x:BoundField HeaderText="标题" SortField="Title" DataField="Title" Width="120px" />
<x:BoundField HeaderText="名称" SortField="ModuleName" DataField="ModuleName" Width="120px" />
<x:CheckBoxField TextAlign="Center" ColumnID="CanRead" DataField="CanRead" HeaderText="浏览"
RenderAsStaticField="false" Width="50px" />
<x:TemplateField ExpandUnusedSpace="true" ColumnID="Others" HeaderText="其他权限">
<ItemTemplate>
<asp:CheckBoxList ID="ddlOthers" CssClass="others" RepeatLayout="Flow" RepeatDirection="Horizontal"
runat="server">
</asp:CheckBoxList>
</ItemTemplate>
</x:TemplateField>
</Columns>
</x:Grid>
|