2011-04-28 7 views
0

데이터베이스 유형이 bit 인 SQL Server 데이터베이스의 확인란과 필드가 포함 된 gridview가 있습니다.데이터베이스 값을 기준으로 확인란을 선택/선택 취소

데이터베이스 테이블의 값이 1으로 설정된 경우 gridview의 확인란을 선택하고 사용하지 않도록 설정해야합니다. 그렇지 않으면 선택을 해제하고 사용하도록 설정해야합니다.

이것은 데이터 바인딩시 발생해야합니다. 이 작업을 수행하는 방법?

+0

AFAIK, 격자에는 이미 확인란 유형 열이 있습니다. –

답변

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> 

Codebehind가 :

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 오 = 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는 모든 행에서 반복하는 카운터입니다.

관련 문제