iT邦幫忙

1

[ASP.NET WebForm]抓取GridView "編輯"模式下,TextBox修改後的數值(四種作法的分享)

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


尚未有邦友留言

立即登入留言