2016-01-26 55 views
0

我有一個顯示列表的GridView,用戶可以爲每個項目選擇一個複選框。無法綁定GridView中的複選框

enter image description here

因此,例如,我檢查了第二排。我可以在校驗值旁邊這說明已經更新到1數據庫見:

enter image description here

但是,當我重新回到GridView控件,所有的複選框是空白的一次。

代碼的GridView:

<asp:GridView style="width:75%" 
         ID="gvCVRTDetails" 
         ShowHeaderWhenEmpty="true" 
         CssClass="tblResults" 
         runat="server" 
         OnRowDataBound="gvCVRTDetails_RowDataBound"        
         DataKeyField="ID" 
         AutoGenerateColumns="false" 
         allowpaging="false" 
         AlternatingRowStyle-BackColor="#EEEEEE"> 
         <HeaderStyle CssClass="tblResultsHeader" /> 
         <Columns> 
          <asp:BoundField DataField="ChecklistID" HeaderText="ID" ></asp:BoundField> 
          <asp:BoundField DataField="Description" HeaderText="Checklist Items"></asp:BoundField> 
          <asp:TemplateField HeaderText ="Checked?" ItemStyle-HorizontalAlign="Center"> 
           <ItemTemplate> 
             <asp:CheckBox ID="chkChecked" runat="server" ></asp:CheckBox> 
           </ItemTemplate> 
          </asp:TemplateField> 
         </Columns> 
        </asp:GridView> 

後面的代碼:

protected void gvCVRTDetails_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      lookupCVRT work = (lookupCVRT)e.Row.DataItem; 
      GridView gv = sender as GridView; 

      e.Row.Attributes.Add("ID", "gvCVRTDetails_" + work.ID); 
      e.Row.Cells[0].Attributes.Add("onclick", "event.stopPropagation();"); 

      CheckBox chkChecked = e.Row.FindControl("chkChecked") as CheckBox; 

      if(work.Checked) 
      { 
       chkChecked.Checked = true; 
      } 

     } 
    } 

我試着設置chkChecked.Checked = true;如果在數據庫中選中字段中的值,但沒有奏效。如果數據庫中的值等於1,如何使複選框顯示爲勾選?

綁定網格:

protected void gridviewParent_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     List<lookupCVRT> workDetails = lookupCVRT.GetChecklistItemsByChecklistID(Company.Current.CompanyID, ParentID.ToString(), gvCVRT.SelectedDataKey.Value.ToString()); 
     gvCVRTDetails.DataSource = workDetails; 
     gvCVRTDetails.DataBind(); 
     FireJavascriptCallback("setArgAndPostBack();"); 

    } 
+0

那就是值綁定到裏面的GridView的複選框一種奇怪的方式,但第一眼看起來一般看起來不錯。你嘗試調試它嗎? – Andrei

+0

@Andrei是的,我調試它,它進入if語句,但當我看着網格的複選框仍然是空的 – user123456789

+0

@Andrei我也​​嘗試添加'檢查='<%#綁定(「檢查」)%>'到電網,但也沒有工作。有任何想法嗎? – user123456789

回答

0

你應該綁定的複選框,你從數據庫讀取屬性,是這樣的:

 <asp:TemplateField HeaderText ="Checked?" ItemStyle-HorizontalAlign="Center"> 
       <ItemTemplate> 
       <asp:CheckBox ID="chkChecked" Checked='<%# Bind("YourCheckPropertyFromModel") %>'runat="server" ></asp:CheckBox> 
       </ItemTemplate> 
    </asp:TemplateField> 
+0

沒有工作複選框仍然是空的 – user123456789

+0

我也試過'Checked ='<%#bool.Parse(Eval(「Checked」)。ToString())%>''但是沒有工作 – user123456789

+0

任何其他想法呢?我仍然無法工作 – user123456789