我已經嘗試創建附加到按鈕的事件以遍歷網格視圖的每一行,以將選中的值更改爲等於true。一旦我點擊這個按鈕,它如何使它標記每一件事情是真的?如何設置一個按鈕單擊每行中的複選框
這是代碼我已經開始用:
foreach (GridViewRow row in GridView1.Rows)
{
//I get stuck at this part
row.Cells[9].FindControl("Overwrite")
}
我已經嘗試創建附加到按鈕的事件以遍歷網格視圖的每一行,以將選中的值更改爲等於true。一旦我點擊這個按鈕,它如何使它標記每一件事情是真的?如何設置一個按鈕單擊每行中的複選框
這是代碼我已經開始用:
foreach (GridViewRow row in GridView1.Rows)
{
//I get stuck at this part
row.Cells[9].FindControl("Overwrite")
}
在你GridView
標記,如果您使用的是TemplateField
舉行CheckBox
控制,那麼你可以寫容易FindControl
代碼實際定位TextBox
控制,像這樣:
<asp:GridView ID="GridView1" runat="server" Visible="False">
<Columns>
<asp:TemplateField HeaderText="Action Item">
<ItemTemplate>
<asp:CheckBox ID="Overwrite" runat="server"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
現在,在您的代碼隱藏,你可以這樣做:
foreach (GridViewRow row in GridView1.Rows)
{
// Only check data rows, ignoring header or footer rows
if (row.RowType == DataControlRowType.DataRow)
{
CheckBox b = row.FindControl("Overwrite") as CheckBox;
if(b != null)
{
b.Checked = true;
}
}
}
注意:您不需要Cells
指數了,因爲FindControl
可以搜索整個排找了一個名爲Overwrite
控制。
你不需要'b.Checked = true;'附近的括號。 –
@JoeTyman - 是的,從技術上說你是對的,但是如果'if'塊中有多行,那麼你確實需要它們,並且我的'if'塊中幾乎總是有一個以上的語句,所以它是一個習慣。 :-) –
我知道,我個人喜歡儘可能地在一條線上,儘管它在80列以下。 –
foreach (GridViewRow row in GridView1.Rows)
{
CheckBox b = row.Cells[9].FindControl("Overwrite") as CheckBox;
b.Checked = true;
}
如果你關心性能,你應該可以通過使用javascript函數來避免回發。 –