asp.net:如何检查动态创建的控件是否已回发

时间:2011-03-07 04:22:45

标签: asp.net

如何检查动态创建的控件是否已回发?以下代码无效。

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;
            }
            if (c is System.Web.UI.WebControls.ImageButton)
            {
                control = c;
                break;
            }
        }
    }
    return control;

我在page_Init上动态创建了一些图像按钮。但上面的代码总是返回null。这是为什么?如何检查图像按钮是否已回发?

注意:我能够处理这些图像按钮的点击事件。

1 个答案:

答案 0 :(得分:1)

如果您想知道哪个控件在Page_Load时启动了回发,则Steve C. Orr有一些提示:

  

你可以覆盖   页面的RaisePostBackEvent方法   类。第一个参数发送到   这个方法是造成的对象   回发。记得打电话   base.RaisePostBackEvent()所以   回发事件被正确引发。

     

或者,而不是加载事件   你可以移动条件代码   发生在PreRender事件中   在所有控制事件之后。所以   然后你会知道哪个控件   导致了回发。

...

  

如果您的ImageButton位于网格内,   你可以按下你的按钮了   commandName和itemCommand检查   如果命令是你的命令。

http://www.velocityreviews.com/forums/t90304-detect-which-imagebutton-caused-postback.html