调用页面事件.NET用户控件事件被调用

本文关键字:调用 事件 控件 用户 NET | 更新日期: 2023-09-27 18:11:32

假设页面中有一个名为分页的用户控件。它嵌入在PageWithResults.aspx中。这个控件有必要的属性来跟踪你在什么页面上的各种细节(即:CurrentPage, TotalRecordsInResults, RecordsPerPage等)。它还包含单击超链接("下一页"或"上一页")时触发的事件。下面的例子。我需要告诉PageWithResults。aspx表明其中一个LinkButton web控件被点击了。我认为我需要在页面中分配一个委托,这样当这个用户控件事件被调用时(超链接被点击),它也会调用页面类中的一些其他方法/事件。这样,我就可以快速检查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
    }

调用页面事件.NET用户控件事件被调用

使用事件就可以了。

你可以像这样在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中强制转换Page引用,并直接调用一个公共方法:

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