MIS2000 Lab. -- ASP.NET学习&分享 / ASP.NET案例精编(清华大学出版社)
您好,我来自台湾。很高兴与各位分享一些成果。希望对您有帮助。出版书籍是「ASP.NET案例精编 / 清华大学出版社」。

[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();
        // 后续省略......
    }

 

posted on 2015-12-22 17:13  MIS2000 Lab.  阅读(332)  评论(0编辑  收藏  举报


ASP.NET案例精编——适用于VS 2005/2008(配光盘)
 

当当网购买 http://product.dangdang.com/product.aspx?product_id=20583373&ref=search-1-pub