2011-04-28 95 views
0

我有一个gridview,其中包含数据类型为bit的sql server数据库中的复选框和字段。根据数据库值检查/取消选中复选框

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

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

+0

AFAIK,网格已经有一个复选框类型列。 – 2011-04-28 11:21:24

回答

3
<asp:TemplateField> 
    <ItemTemplate> 
<asp:CheckBox ID="CheckBox1" runat="server" Enabled='<%# Eval("ColumnName") ? false : true %>' Checked='<%# Eval("ColumnName") %>' /> 
     </ItemTemplate> 
    </asp:TemplateField> 
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> 
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 
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是在每一行中迭代的计数器。

相关问题