获得引起postback的控件

       

  string  ctrlname  =  page.Request.Params.Get( " __EVENTTARGET " );
if  (ctrlname  !=   null   &&  ctrlname  !=   string .Empty)
{
    
return this.Page.FindControl(ctrlname);
}

 

关键字:_EVENTTARGET.<hidden   name="_EVENTTARGET------->...>
以上的代码,是搜索引发页面回发事件的控件,其基理可参阅(英文版).上面的代码貌似解决了查找引发页面回发的控件的功能,然而却有特例.就是这段代码不作用于按钮控件.在查看生成的(render)代码时,从含有名为_EVENTTARGET的标签中,您找不到Button控件,因为它最终render的是<input type=“submit” >标签,所以以上的代码对于button事件来说,是实现不了的。但是我们可以通过其它的途径来获取它。
所需掌握内容:在引发提交事件的控件,只有button控件被存储在回发的form控件集里。所以可以通过一个循环语句找到form控件集中button集中的具体引发事件的那个button控件。

 

public   static  Control GetPostBackControl(Page page)
{
    Control control 
= null;

    
string ctrlname = page.Request.Params.Get("__EVENTTARGET");
    
if (ctrlname != null && ctrlname != string.Empty)
    
{
        control 
= page.FindControl(ctrlname);
    }

    
else
    
{
        
foreach (string ctl in page.Request.Form)
        
{
            Control c 
= page.FindControl(ctl);
            
if (c is System.Web.UI.WebControls.Button)
            
{
                control 
= c;
                
break;
            }

        }

    }

    
return control;
}


 

上面的方法引入了一个参数(page),然后使用这个参数去寻找引发回传事件的控件。我们可以调用这个方法了。       

Control c  =  PageUtility.GetPostBackControl( this .Page);
if  (c  !=   null )
{
    
//...
}


 

希望能帮助大家加深理解,并思索这些原理将怎样用在具体的实例中。以后我会分别搜集介绍。

  

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值