我有一个我想创建的列数未知的 RadGrid。实际上我知道第一列,它的 DataField 为PermissionName
. 我有一个 CSLA 数据源,它返回一个PermissionInfo
对象列表,每个对象都包含一个RoleInfo
对象列表。当 PermissionInfo 对象具有不同数量的对象时,如何在 RadGrid 中为每个 RoleInfo 对象动态创建一列RoleInfo
?
如果任何PermissionInfo 对象包含特定的 RoleInfo 对象,我想创建一个列,其中 RoleInfo.RoleName 作为标题,True 作为 DataValue。如果该RoleInfo
对象不存在,那么我希望该行和列的 DataValue = false 。
这是我的 RadGrid:
<telerik:RadGrid ID="rgPermissions" AllowPaging="false" AllowSorting="true" AutoGenerateColumns="false"
DataSourceID="dsPermissions" runat="server">
<MasterTableView DataKeyNames="PermissionId" DataSourceID="dsPermissions" EditMode="InPlace">
<Columns>
<telerik:GridBoundColumn DataField="PermissionName" HeaderText="Permission" ></telerik:GridBoundColumn>
</Columns>
</MasterTableView>
</telerik:RadGrid>
<csla:CslaDataSource ID="dsPermissions" runat="server" OnSelectObject="dsPermissions_SelectObject">
</csla:CslaDataSource>
以下是中的属性PermissionInfo
public int PermissionId { get; set; }
public string PermissionName { get; set; }
public RoleInfoList Roles { get; set; }
以下是 中的属性RoleInfo
:
public int RoleId { get; set; }
public string RoleName { get; set; }
public string Title { get; set; }
在我的page_load
方法中,我还编写了一个工厂方法来检索所有角色:
RoleInfoList roles = RoleInfoList.GetRoleList();