时间: 2020-11-26|41次围观|0 条评论

[FAQ]抓取GridView "编辑"模式下,TextBox修改后的数值 -- ASP.NET专题实务「上集」Ch.10

 

  

抓取GridView "编辑"模式下,TextBox修改后的数值

 

对应书本「上集」第十章(ASP.NET专题实务 / 松岗出版)

[C#] ADO.NET #3 (GridView + SqlDataSource)完全手写、后置程序代码,兼论 SqlDataSource与UpdateParameter/DeleteParameter的用法

[C#] ADO.NET #3-1 (GridView + DataReader + SqlCommand)完全手写、后置程序代码

 

这是昨天上课的补充讲义:

================================================================

请写在GridView的 RowUpdating事件里面

 

第一,转成样版(Template),透过 .FindControl()方法处理

GridView1.Rows[e.RowIndex].FindControl("子控件ID")

 

.FindControl()的范例太多了,因为太好用、太常用,请看 http://www.dotblogs.com.tw/mis2000lab/Tags/findcontrol/default.aspx

 

第二,转成样版,请用 .Controls处理

GridView1.Rows[e.RowIndex].Cells[数字].Controls[0]

 

这方法比较不好操作,可以参阅以前的文章与范例:

上集 Ch.10 -- .Controls() / .Controls[]的补充范例 #1

上集 Ch.10 -- .Controls() / .Controls[]的补充范例 #2 -- 转成样版(Template)以后

 

 

 

 

第三,透过 RowUpdating事件里面的参数e

 

 

e.NewValues["域名"] -- 修改以后的「资料」

 

另外有一个 e.OldValues["域名"]  其实就是「开放式并行存取」里面提到的观念 -- 修改以前的「旧数据」

[图解] SqlDataSource 开放式并行存取 (Optimistic Concurrency),以GridView为例

 

 

第四,传统的Request也能抓到。

首先,您必须透过 UniqueID属性抓到HTML网页(程序执行后的成果画面)上的控件编号(独一无二的编号)

[习题] Web控件 -- UniqueID属性 与 ID属性两者的差异(上集Ch. 3 补充范例)

有了这个编号,就能透过 Request来撷取,例如:

    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {   
        //----修改、更新
        TextBox my_test_time = (TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0];   // 抓到「Text控件」。  
        //---- 您也可以透过下列作法,取得GridView "编辑模式"下的TextBox,修改 "之后"的数值。
        Response.Write("第1个TextBox的 UniqueID" + my_test_time.UniqueID + "<hr>");  
        Response.Write(Request[my_test_time.UniqueID] + "<br>");  
        Response.End();
        // 后续省略......
    }

 

转载于:https://www.cnblogs.com/mis2000lab/p/5067291.html

原文链接:https://blog.csdn.net/weixin_30342827/article/details/99181496

本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。

本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自起风了,原文地址《抓取GridView “编辑”模式下,TextBox修改后的数值
   

还没有人抢沙发呢~