ASP.NET数据绑定字段 - >如何检查checkboxfield

时间:2012-11-12 22:56:31

标签: c# asp.net gridview sqldatasource databound

我遇到了问题而无法找到答案。 在VS2012中,我在 C#中创建了一个ASP.NET网站。

我的会员提供商设置和工作,现在我想建立一个管理员可以编辑角色并阻止用户的管理页面。从服务器资源管理器中,我将asp_membership表拖到页面上并自行创建。

我删除了一些不相关的列,添加了一个itemtemplatefield ,带有两个按钮。首先看一下代码:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    DataKeyNames="UserId" DataSourceID="SqlDataSource1" 
    EmptyDataText="There are no data records to display." 
    OnSelectedIndexChanged="GridView1_SelectedIndexChanged" >
    <Columns>
        <asp:CommandField ShowDeleteButton="True" />
        <asp:TemplateField HeaderText="Block users">
            <ItemTemplate>
                <asp:Button runat="server" ID="btnBlock" CommandName="Block"
                    Text="Block" OnClick="btnBlock_Click" Visible='<%# Convert.ToBoolean(Eval("IsLockedOut").ToString()) %>'/>
                <asp:Button runat="server" ID="btnDeblock" CommandName="Deblock"
                    Text="Deblock" OnClick="bntDeblock_Click" Visible='<%# Convert.ToBoolean(Eval("IsLockedOut").ToString()) %>' />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField DataField="UserId" HeaderText="User id" ReadOnly="True" 
            SortExpression="UserId" />
        <asp:BoundField DataField="Email" HeaderText="Email" SortExpression="Email" />
        <asp:CheckBoxField DataField="IsApproved" HeaderText="Confirmed" 
            SortExpression="IsApproved" />
        <asp:BoundField DataField="CreateDate" HeaderText="Created" 
            SortExpression="CreateDate" />
        <asp:BoundField DataField="LastLoginDate" HeaderText="Last login" 
            SortExpression="LastLoginDate" />
        <asp:CheckBoxField DataField="IsLockedOut" HeaderText="Locked" 
            SortExpression="IsLockedOut" />
        <asp:BoundField DataField="LastLockoutDate" HeaderText="Last lockout" 
            SortExpression="LastLockoutDate" />
        <asp:BoundField DataField="FailedPasswordAttemptCount" 
            HeaderText="Failed logins" 
            SortExpression="FailedPasswordAttemptCount" />
        <asp:BoundField DataField="Comment" HeaderText="Comments" 
            SortExpression="Comment" />
    </Columns>
</asp:GridView>

如果复选框“IsLockedOut”被禁用,我试图制作两个应该可见的块(块和去块),如果......得到点,则看不见。

加载页面时按钮都消失了。我假设错误存在于此:&lt;%#Convert.ToBoolean(Eval(“IsLockedOut”)。ToString())%&gt;? 有人能帮助我吗?

1 个答案:

答案 0 :(得分:1)

您不应该需要.ToString()Convert.ToBoolean(); .NET几乎可以帮你做到这一点。

Visible='<%# Eval("IsLockedOut") %>'

如果您向<asp:Label />添加ItemTemplate并将Text属性绑定为上述内容,您会看到什么?您的IsLockedOut属性是Nullable<Boolean>吗?如果是,你可以试试这个:

Visible = '<%# Eval("IsLockedOut") ?? true %>'

或者

Visible = '<%# ((Nullable<bool>)Eval("IsLockedOut")).GetValueOrDefault(true) %>'