C# 调用ASP.NET用户控件事件时调用页面事件

C# 调用ASP.NET用户控件事件时调用页面事件,c#,.net,events,delegates,paging,C#,.net,Events,Delegates,Paging,假设在PageWithResults.aspx中嵌入了名为Paging.ascx的页面中有一个用户控件。此控件具有必要的属性来跟踪有关您所在页面的各种详细信息,例如:CurrentPage、TotalRecordsInResults、RecordsPerPage等。。。它还包含当您单击超链接下一页或上一页时触发的事件。下面的例子。我需要告诉PageWithResults.aspx其中一个LinkButton web控件被单击。我想我需要在页面中分配一个委托,这样当单击这个名为hyperlink的

假设在PageWithResults.aspx中嵌入了名为Paging.ascx的页面中有一个用户控件。此控件具有必要的属性来跟踪有关您所在页面的各种详细信息,例如:CurrentPage、TotalRecordsInResults、RecordsPerPage等。。。它还包含当您单击超链接下一页或上一页时触发的事件。下面的例子。我需要告诉PageWithResults.aspx其中一个LinkButton web控件被单击。我想我需要在页面中分配一个委托,这样当单击这个名为hyperlink的用户控件事件时,它也会调用page类中的其他方法/事件。这样,我可以根据下面事件中调用的内容快速检查CurrentPage的新值,并根据CurrentPage属性获取新页面的新结果集。但我不确定最好的方法。我想这需要一名代表,但我不知道如何连接。如果您需要更多详细信息,请询问

    protected void btnNext_Click(object sender, EventArgs e)
    {
        this.CurrentPage = this.CurrentPage + 1;
        if (OnPageChanged != null) OnPageChanged(this.CurrentPage);
    }
我想我得把我的代表放在这里的某个地方

    protected void btnNext_Click(object sender, EventArgs e)
    {
        this.CurrentPage = this.CurrentPage + 1;
        if (OnPageChanged != null) OnPageChanged(this.CurrentPage);
                    //delegate to call object.method or something
    }

使用事件可以很好地工作

您可以在UserControl中创建事件,如下所示:

public event EventHandler ButtonClicked;
然后在需要时调用事件:

protected void Button1_Click(object sender, EventArgs e)
{
    if (ButtonClicked != null)
        ButtonClicked(this, new EventArgs());
}
在页面中,您需要分配一个事件处理程序:

protected void Page_Load(object sender, EventArgs e)
{
    UserControl1.ButtonClicked += new EventHandler(UserControl1_ButtonClicked);
}

void UserControl1_ButtonClicked(object sender, EventArgs e)
{

}
除了使用上述方法,您还可以在UserControl中强制转换页面引用,并直接调用公共方法:

MyPage page = (MyPage)Page;
page.AMethod();

希望这有帮助。

使用事件会很好

您可以在UserControl中创建事件,如下所示:

public event EventHandler ButtonClicked;
然后在需要时调用事件:

protected void Button1_Click(object sender, EventArgs e)
{
    if (ButtonClicked != null)
        ButtonClicked(this, new EventArgs());
}
在页面中,您需要分配一个事件处理程序:

protected void Page_Load(object sender, EventArgs e)
{
    UserControl1.ButtonClicked += new EventHandler(UserControl1_ButtonClicked);
}

void UserControl1_ButtonClicked(object sender, EventArgs e)
{

}
除了使用上述方法,您还可以在UserControl中强制转换页面引用,并直接调用公共方法:

MyPage page = (MyPage)Page;
page.AMethod();

希望这能有所帮助。

我的头与这些代表一起旋转我的头与这些代表一起旋转