• 页面回传的时候如何获取引发源?


    在开发asp.net程序过程中 ,经常需要知道在页面发生postback的时候,是由页面上哪个控件引发的。

    比如页面上引入了一个用户控件,该用户控件有若干服务器端的按钮,由于点击事件都写在用户控件的后台代码里了,引用页面上却又想针对点击不同的按钮做一些不同的处理,但却没有办法知道点击的是哪个按钮;

    又或者,页面上有个按钮,我们想在想在执行button_click()方法之前先执行某些代码,写在page_load里面呢,也同样无法区分是由哪个控件引发的page_load(除非你的页面只有这个按钮可以引发回传),

    我上sdk上查了一下,发现页面回传的时候,该事件会在page_load之后被执行,参数中带有引发回传的控件,

    重写该方法即可

    protected override void RaisePostBackEvent(IPostBackEventHandler sourceControl, string eventArgument)
      {

     
       base.RaisePostBackEvent (sourceControl, eventArgument);

    //下面加入你要执行的代码

      {

    if(((控件类型)  sourceControl).控件属性=="xxxxx")

    }
      }

     刚刚在csdn参考了某位网友的解答,原来这样也可以

    在page_load()

    {

    ArrayList list = new ArrayList(Request.Form.Keys);
    if (list.Contains(Button1.ID))
    {
        Response.Write(Button1.Text+"被按下");
    }

    }

    这里我比较奇怪,表单被提交的时候,只有textBox和被点击的按钮会被提交,别的按钮不会北提交,也就是说,如果有若干个可引发回传的按钮,只有被点击的才会提交。没想到。

    我本来还想着如果在页面上放一个隐藏的textbox(是客户端隐藏,不是服务器端的隐藏),写一个脚本,当按钮被点击的时候,把按钮id写入该textbox,然后在page_load里就可以读取该id了。。。。 看来不需要这么麻烦。

  • 相关阅读:
    HTML中CSS入门基础
    HTML基本代码教学,第三天
    HTML基本代码教学,第二天
    HTML基本代码教学片,认识HTML
    开学第一天,规章制度,教学大纲
    新的学期,从头开始
    开启新模式WinForm
    封装、继承、多态的基本详细使用方式与方法以及含义
    Python开发基础-Day4-布尔运算、集合
    Python开发基础-Day3-列表、元组和字典
  • 原文地址:https://www.cnblogs.com/lindping/p/2004845.html
Copyright © 2020-2023  润新知