有多种方法可以完成您正在寻找的内容。第一个是简单地重新排序包含页面中的事件。如果您使用 PreRender 事件而不是 PageLoad 事件,您的下拉选择操作将完成并且信息将很容易获得。
第二种可能更具可扩展性的方法是从您的用户控件中引发一个自定义事件,您的页面将侦听和处理该事件。然后将在信息立即可用的地方直接采取行动。这允许任何包含结构(无论是页面、用户控件还是类似的东西)订阅事件并处理所需的任何内容。
第三种更严格的方法是在包含页面中有一个函数,一旦数据完成,用户控件就会调用该函数。这要求用户控件了解它将包含在其中的特定页面类型(使其可扩展性降低),因此我不推荐它。
编辑:这是使用自定义事件实现选项 #2 的想法:
public partial class MyUserControl: UserControl
{
//All of your existing code goes in here somewhere
//Declare an event that describes what happened. This is a delegate
public event EventHandler PageSizeSelected;
//Provide a method that properly raises the event
protected virtual void OnPageSizeSelected(EventArgs e)
{
// Here, you use the "this" so it's your own control. You can also
// customize the EventArgs to pass something you'd like.
if (PageSizeSelected!= null)
PageSizeSelected(this, e);
}
private void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
{
_SelectedPageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
OnPageSizeSelected(EventArgs.Empty);
}
}
然后在您的页面代码中,您将监听该事件。在页面加载的某处,您将添加:
myUserControlInstance.PageSizeSelected += MyHandinglingMethod;
然后提供处理事件的方法:
protected void MyHandlingMethod(object sender, EventArgs e)
{
// Do what you need to do here
}