根据数据库值选中/取消选中复选框

时间:2011-04-28 11:16:57

标签: .net asp.net sql gridview checkbox

我有一个gridview,其中包含sql server数据库中的复选框和字段,其数据类型为bit

如果数据库表中的值设置为1,则应检查并禁用gridview中的复选框,否则应取消选中并启用它。

这应该在数据绑定时发生。如何完成这项任务?

4 个答案:

答案 0 :(得分:3)

<asp:TemplateField>
    <ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" Enabled='<%# Eval("ColumnName") ? false : true %>' Checked='<%# Eval("ColumnName") %>' />
      </ItemTemplate>
  </asp:TemplateField>

答案 1 :(得分:2)

当你在gridview中声明如下时,你必须直接给出。

 <ItemTemplate>
    <asp:CheckBox ID="chkAlert1" runat="server" Visible="true" Enabled="false" Checked='<%# DataBinder.Eval(Container,"DataItem.Alert") %>' />
    <asp:CheckBox ID="chkAlert" runat="server" Visible="false" Enabled="true" Checked='<%# DataBinder.Eval(Container,"DataItem.Alert") %>' />
 </ItemTemplate>

答案 2 :(得分:0)

您可以使用TemplateField和GridView的RowDataBound事件来实现您想要的效果。这是一个完整的例子:

ASPX:

<asp:GridView ID="GridView1" AutoGenerateColumns="false" runat="server">
    <Columns>
        <asp:TemplateField>
           <ItemTemplate>
                <asp:CheckBox ID="ChkMyBitColumn" runat="server" />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

代码隐藏:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not IsPostBack Then
        'create some Testdata'
        BindGrid()
    End If
End Sub

Private Sub BindGrid()
    Dim tbl As New DataTable
    Dim rnd As New Random
    tbl.Columns.Add(New DataColumn("MyBitColumn", GetType(Boolean)))
    For i As Int32 = 1 To 10
        Dim row As DataRow = tbl.NewRow
        row("MyBitColumn") = rnd.Next(1, 3) Mod 2 = 0 'get a random boolean'
        tbl.Rows.Add(row)
    Next
    Me.GridView1.DataSource = tbl
    Me.GridView1.DataBind()
End Sub

Private Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
    If e.Row.RowType = DataControlRowType.DataRow Then
        Dim row = DirectCast(e.Row.DataItem, DataRowView).Row
        Dim MyBitColumnValue = DirectCast(row("MyBitColumn"), Boolean)
        Dim ChkMyBitColumn = DirectCast(e.Row.FindControl("ChkMyBitColumn"), CheckBox)
        ChkMyBitColumn.Checked = MyBitColumnValue
        ChkMyBitColumn.Enabled = Not ChkMyBitColumn.Checked
    End If
End Sub

答案 3 :(得分:0)

int o = 0;

        foreach (GridViewRow row in GridView1.Rows)
            {

                if (z == ds1.Tables[4].Rows[o]["Name"].ToString())
                {
                    CheckBox chk = (CheckBox)row.FindControl("chkusergroup");
                    chk.Checked = true;
                }
                else
                {
                    CheckBox chk = (CheckBox)row.FindControl("chkusergroup");
                    chk.Checked = false;


                }

            o++;





            }`enter code here`

Gridview1是Gridview ID。 Z是包含值的字符串。 我正在检查每一行中的一列是否与'z'匹配,是否匹配而不是设置复选框以进行检查。 O是每行迭代的计数器。