ASP.NET 转发器获取所有项目和复选框(如果用户有权限)

ASP.NET repeater get all items and checkbox if user has right

我有一个 ASP.NET 应用程序,我想显示所有角色并添加一个复选框,如果用户有权限则选中该复选框。 我使用 ASP 中继器来获取所有角色,但我如何才能选中同一个中继器中的复选框来获取用户的角色? 这是我的代码:

  <asp:Repeater ID="RepeaterRole" runat="server" DataSourceID="ObjectDataSource2">
        <ItemTemplate>
            <div>
                <asp:CheckBox runat="server" Checked="False" />
                <asp:Label CssClass="lbl" ID="Label1" runat="server" Text='<%# Eval("RoleLabel")%>'></asp:Label>
            </div>
        </ItemTemplate>
    </asp:Repeater>
    <asp:ObjectDataSource ID="ObjectDataSource2" runat="server" SelectMethod="GetAllRolesToCollection" TypeName="Business.BusinessObject.Role"></asp:ObjectDataSource>
  <asp:Repeater ID="RepeaterRole" runat="server" DataSourceID="ObjectDataSource2">
        <ItemTemplate>
            <div>
                <asp:CheckBox runat="server" Checked='<%# Convert.ToBoolean(Eval("role")) %>'  />
                <asp:Label CssClass="lbl" ID="Label1" runat="server" Text='<%# Eval("RoleLabel")%>'></asp:Label>
            </div>
        </ItemTemplate>
    </asp:Repeater>
    <asp:ObjectDataSource ID="ObjectDataSource2" runat="server" SelectMethod="GetAllRolesToCollection" TypeName="Business.BusinessObject.Role"></asp:ObjectDataSource>

确保从 DB

中获取 'role' 字段 1 或 0

谢谢哈迪克, 根据您的解决方案,我创建了一个类似的方法,如下所示: public Dictionary GetAllRolesFromUserToDictionary() 因此复选框将绑定到布尔值 那么ASP代码是这样的:

 <asp:Repeater ID="Repeater1" runat="server" DataSourceID="ObjectDataSource3">
            <ItemTemplate>
                <div>
                    <asp:CheckBox ID="CheckBox2" runat="server" Checked='<%# Eval("Value")%>' />
                    <asp:Label ID="Label1" runat="server" Text='<%# Eval("Key")%>'></asp:Label>
                </div>
            </ItemTemplate>
        </asp:Repeater>
        <asp:ObjectDataSource ID="ObjectDataSource3" runat="server" SelectMethod="GetAllRolesFromCurrentUserToDictionary" TypeName="BusinessObject.RoleCollection"></asp:ObjectDataSource>