如何判斷GridView中哪一列中的控制項引發Postback
假設要在GridView中的第四欄(Dropdown)使用Dropdown List讓使用者選擇,接著將被選擇DropdownList所在的RowIndex顯示於同列第三欄的Label中該如何做,本文對此提出可能的作法,說明如下:
- 首先將DropdownList的Autopostback屬性設定為true。
- 於DropdownList的SelectedIndexChanged事件中撰寫下列程式碼:
1: protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
2: {
3: DropDownList ddl = sender as DropDownList;
4: GridViewRow gvr = ddl.NamingContainer as GridViewRow;
5:
6: if (gvr != null)
7: {
8: Label lbl = gvr.FindControl("Label1") as Label;
9: if (lbl != null)
10: {
11: lbl.Text = string.Format("第{0}列引發Postback,被選取的值為{1}", gvr.RowIndex.ToString(),ddl.SelectedValue);
12: }
13: }
14: }
整篇文章的重點在於上述程式碼的第4列,透過NamingContainer屬性取得引發Postback的DropdownList所在的Container,也就是GridViewRow,接著就可以取得該列上任一欄位及控制項進行相關的操作。
- 執行結果如下: