需逐列檢查 GridView 中的 CheckBox 狀態,或取得特定欄位的 HyperLink 文字。
int count = GridView1.Rows.Count;
for (int i = 0; i < count; i++)
{
// 取得第 0 格的 HyperLink 文字
string text = ((HyperLink)GridView1.Rows[i].Cells[0].Controls[0]).Text.Trim();
// 尋找 CheckBox
CheckBox chk = (CheckBox)GridView1.Rows[i].FindControl("CheckBox2");
if (chk.Checked) { /* ... */ }
}
foreach (GridViewRow row in GridView1.Rows)
{
CheckBox chk = (CheckBox)row.FindControl("CheckBox2");
if (chk != null && chk.Checked)
{
// 處理勾選列
}
}
var checkedRows = GridView1.Rows.Cast<GridViewRow>()
.Where(r => ((CheckBox)r.FindControl("CheckBox2")).Checked);
foreach (var row in checkedRows)
{
// 處理
}
| 寫法 | 優點 | 缺點 | 建議場景 |
|---|---|---|---|
| for + 索引 | 可隨意跳躍、反向、步進 | 程式碼較冗長 | 需精確控制索引或非循序處理 |
| foreach | 語意清晰、不易越界 | 無法修改集合結構 | 單純逐列處理、最常用 |
| LINQ | 可組合篩選/投影、可讀性高 | 微額外負擔 | 複雜篩選條件、需投影新型別 |
GridView1.Rows 僅包含資料列,不含 Header/Footer/Pager,無需額外判斷 RowType。EditItemTemplate 或 ItemTemplate 中,確認目前列狀態正確。