在页面期间识别.如果要处理按钮单击事件,则加载



我有一个ASPX网页,上面有一个按钮。一旦用户点击这个按钮,请求就会提交到服务器,并执行按钮点击事件处理程序。

我有一些逻辑必须驻留在Page.Load上,但这个逻辑取决于是否通过点击按钮提交了请求。基于页面生命周期,事件处理程序在页面加载后执行。

问题:在页面加载中,我如何了解页面加载后将执行哪些事件处理程序?

@akton的答案可能是你应该做的,但如果你想离开保留并确定是什么导致了生命周期早期的回发,你可以询问回发数据以确定点击了什么。然而,这不会告诉您在事件处理期间将执行哪些实际函数/处理程序。

首先,如果不是Button/ImageButton引起了回发,则控件的ID将在__EVENTTARGET中。如果Button导致了回发,那么ASP.NET会做一些"可爱"的事情:它会忽略所有其他按钮,这样只有单击的按钮才会显示在表单上。ImageButton有点不同,因为它会发送坐标。您可以包括的实用程序功能:

public static Control GetPostBackControl(Page page)
{
    Control postbackControlInstance = null;
    string postbackControlName = page.Request.Params.Get("__EVENTTARGET");
    if (postbackControlName != null && postbackControlName != string.Empty)
    {
        postbackControlInstance = page.FindControl(postbackControlName);
    }
    else
    {
        // handle the Button control postbacks
        for (int i = 0; i < page.Request.Form.Keys.Count; i++)
        {
            postbackControlInstance = page.FindControl(page.Request.Form.Keys[i]);
            if (postbackControlInstance is System.Web.UI.WebControls.Button)
            {
                return postbackControlInstance;
            }
        }
    }
    // handle the ImageButton postbacks
    if (postbackControlInstance == null)
    {
        for (int i = 0; i < page.Request.Form.Count; i++)
        {
            if ( (page.Request.Form.Keys[i].EndsWith(".x")) || (page.Request.Form.Keys[i].EndsWith(".y")))
            {
                postbackControlInstance = page.FindControl(page.Request.Form.Keys[i].Substring(0, page.Request.Form.Keys[i].Length-2) );
                return postbackControlInstance;
            }
        }
    }
    return postbackControlInstance;
}   

话虽如此,如果你可以重构你的控件/页面来延迟执行,那么如果你使用@akton建议的范式,你的代码将更加干净/健壮。

这个问题可能有更好的解决方案。是否希望代码仅在首次加载页面并且使用回发时运行?如果是,请检查Page.IsPostBack属性。如果代码不需要在其他事件处理程序之前运行,请将其移动到OnPreRender,因为它在事件处理程序之后激发。

这些对我帮助很大:我想从我的gridview中保存值,它正在重新加载我的gridview/覆盖我的新值,因为我的PageLoad中有IsPostBack。

if (HttpContext.Current.Request["MYCLICKEDBUTTONID"] == null)
{ //Do not reload the gridview.
}
else { reload my gridview. }

来源:http://bytes.com/topic/asp-net/answers/312809-please-help-how-identify-button-clicked

相关内容

  • 没有找到相关文章

最新更新