我有一個包含CheckBox控件的列的ASP GridView。這些CheckBox綁定到一個通過SqlDataSource訪問的位域。 GridView是可編輯的,CheckBoxes在加載時被禁用。 我正在嘗試在編輯期間將啓用的屬性更改爲true,因此正在編輯的行中的CheckBox可以更改,並且此更改會更新爲數據庫中的位字段。GridView複選框 - 無法更改屬性
ASP代碼
<asp:UpdatePanel ID="upGridView" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:GridView ID="gvChecklist" runat="server"
AutoGenerateColumns="false" DataSourceID="dsChecklist"
AutoGenerateEditButton="true" onrowupdating="gvChecklist_RowUpdating"
onrowediting="gvChecklist_RowEditing">
<Columns>
<asp:TemplateField HeaderText="Finished">
<ItemTemplate><asp:CheckBox ID="cbFinished" runat="server" Enabled="false" Checked='<%# Eval("Finished") ?? false %>' /> </ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Division"
HeaderText="Division"
readonly="true" />
<asp:BoundField DataField="Application"
HeaderText="Application"
readonly="true" />
<asp:BoundField DataField="Task"
HeaderText="Task"
readonly="true" />
<asp:BoundField DataField="TestedBy" HeaderText="Tested By" readonly="true"/>
<asp:BoundField DataField="Notes" HeaderText="Notes" ReadOnly="false"/>
<asp:BoundField DataField="JiraTicket"
HeaderText="JIRA Ticket"
readonly="false" />
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
C#代碼背後的RowEditing事件
protected void gvChecklist_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView gvChecklist = (GridView)LoginView1.FindControl("gvChecklist");
CheckBox cb = (CheckBox)gvChecklist.Rows[e.NewEditIndex].Cells[1].FindControl("cbFinished");
cb.Enabled = true;
gvChecklist.DataBind();
}
-edit:我覺得有必要在這裏補充一點的更多信息。將CheckBox cb設置爲GridView Row的CheckBox的代碼似乎正常工作,因爲我可以通過調試器看到啓用的屬性= true。我想知道在這個事件運行後它是否由於PostBack而返回false。這個頁面的Load方法是空的,但我認爲在ASP頁面中打開了enabled = false代碼。的GridView
在標記中,您有複選框'Enabled =「false」'。你爲什麼明確這樣設置? –
因爲我不希望在單擊編輯按鈕之前啓用複選框。 – Andrew
如果加載方法爲空,GV會被綁定在哪裏?嘗試設置複選框的可見性並查看它是否消失/在預期時重新出現。 –