GridView不可能一輩子只使用精靈(SqlDataSource)來搭配
一旦遇見要自己DIY、動手寫的情況,其實需要一些技巧。
第一,轉成樣版(Template),透過 .FindControl()方法處理
第二,不轉成樣版,請用 .Controls處理
第三,透過 RowUpdating事件裡面的參數e
第四,傳統的Request也能抓到。
昨天上課時,學生問起,我就把我目前使用的四種方法列出來,與大家分享
http://www.dotblogs.com.tw/mis2000lab/archive/2015/11/09/gridview_edit_controls_findcontrol_request.aspx
抓取GridView "編輯"模式下,TextBox修改後的數值
對應書本「上集」第十章(ASP.NET專題實務 / 松崗出版)
第一,轉成樣版(Template),透過 .FindControl()方法處理
GridView1.Rows[e.RowIndex].FindControl("子控制項ID")
第二,不轉成樣版,請用 .Controls處理
GridView1.Rows[e.RowIndex].Cells[數字].Controls[0]
第三,透過 RowUpdating事件裡面的參數e
e.NewValues["欄位名稱"]
第四,傳統的Request也能抓到。
首先,您必須透過 UniqueID屬性抓到HTML網頁(程式執行後的成果畫面)上的控制項編號(獨一無二的編號)
有了這個編號,就能透過 Request來擷取,例如:
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
//----修改、更新
TextBox my_test_time = (TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0]; // 抓到「Text控制項」。
//---- 您也可以透過下列作法,取得編輯模式下的TB,修改後的數值。
Response.Write("第1個TextBox的 UniqueID" + my_test_time.UniqueID + "<hr>");
Response.Write(Request[my_test_time.UniqueID] + "<br>");
Response.End();
// 後續省略......
}
每一種作法,我都提供補充範例&延伸閱讀,希望對您有幫助。
http://www.dotblogs.com.tw/mis2000lab/archive/2015/11/09/gridview_edit_controls_findcontrol_request.aspx