根據你所說的,它不是複選框,它將執行PostBack,而是一些其他按鈕,因此你可以一次檢查你的整個選擇。在這種情況下,複選框不應該是AutoPostBack="true"
。
這就是說,你的按鈕的代碼將是這樣的:
foreach (GridViewRow row in gv.Rows)
{
CheckBox cb = row.FindControl("cb") as CheckBox;
if (cb != null)
{
if(cb.Checked)
{
//Do your thing here
}
}
}
更新
OP(賈斯汀)公佈,他希望更新數據庫的每個複選框點擊。在這種情況下,解決辦法是處理CheckBox的OnCheckedChanged
事件:
.aspx的代碼:
<asp:TemplateField HeaderText="Normal User Logging">
<ItemTemplate>
<asp:CheckBox runat="server" ID="normalLogging"
Checked='<%# Eval("normal_toggle") == 1 %>'
AutoPostBack="true"
OnCheckedChanged="cb_CheckedChanged"
yourID='<%#Eval("yourIdField") %>'/>
</ItemTemplate>
</asp:TemplateField>
C#代碼背後:
protected void cb_CheckedChanged(object sender, EventArgs e)
{
Checkbox cb = sender as CheckBox;
string yourID = cb.Attributes["yourID"];
//Do your thing
}
不,我每次複選框被選中時發回。我希望它能更新數據庫並將其反映給用戶。 – Justin
好的,看起來不錯。然而,我的問題仍然是如何確定哪個盒子被檢查。所以在後面的代碼中,我怎麼知道它是第四行的複選框而不是第二行?我只看到複選框對象正在發送,但我沒有看到確定它在哪一行的方法。 – Justin
哦,是的,你說得對。我更新了我的答案以包含該內容。希望能幫助到你! –