如何使用DataBinder.Eval在GridView中使复选框被选中

5

我正在尝试在复选框中勾选值为1或0的内容,基本上在我的数据库中有一个名为Active (bit, not null)的字段,并且我可以将该值传递给网格视图。但是现在我正在尝试使它在位为1时被勾选,如果位为0,则不被勾选,但它并没有起作用。它只会显示未勾选,而位是1。

   <ItemTemplate>
   <asp:CheckBox ID="ItemCheck" runat="server"
    Enabled='<%# (DataBinder.Eval(Container.DataItem, "Active")) %>' />
   </ItemTemplate>

任何帮助都将不胜感激。
2个回答

9

试一试这个:

<asp:CheckBox ID="CheckBox1" runat="server" Checked='<%#Convert.ToBoolean(Eval("Active"))%>' .. />

你可能也可以这样做:
<asp:CheckBox ID="CheckBox1" runat="server" Checked='<%#((bool)Eval("Active"))%>' .. />

1
您可以使用CheckBoxField,它会自动为您完成此操作,并且是GridView的默认子控件。
<asp:GridView ......>
  <Columns>
    <asp:CheckBoxField DataField="Active" SortExpression="Active" />
  </Columns>
</asp:GridView>

这完全是一种风格问题,但我更喜欢使用 RadioButtonList,因为对用户来说通常更直观。

<asp:TemplateField ....>
    <ItemTemplate>
        <asp:RadioButtonList ID="rblActive" runat="server"
            SelectedValue='<%# Bind("Active") %>'
            RepeatDirection="Horizontal">
            <asp:ListItem Value="1">Enabled</asp:ListItem>
            <asp:ListItem Value="0">Disabled</asp:ListItem>
        </asp:RadioButtonList>
    <ItemTemplate>
</asp:TemplateField>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接