我有一個顯示列表的GridView,用戶可以爲每個項目選擇一個複選框。無法綁定GridView中的複選框
因此,例如,我檢查了第二排。我可以在校驗值旁邊這說明已經更新到1數據庫見:
但是,當我重新回到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();");
}
那就是值綁定到裏面的GridView的複選框一種奇怪的方式,但第一眼看起來一般看起來不錯。你嘗試調試它嗎? – Andrei
@Andrei是的,我調試它,它進入if語句,但當我看着網格的複選框仍然是空的 – user123456789
@Andrei我也嘗試添加'檢查='<%#綁定(「檢查」)%>'到電網,但也沒有工作。有任何想法嗎? – user123456789