我有一个用户控件,它作为一个容器来容纳更多的用户控件。
一旦所有子控件都有数据绑定,我需要执行某些访问检查。
我希望我可以附加到 usercontrol.databound 事件,但似乎没有。
一旦其他用户控件具有数据绑定,我还必须在父用户控件上执行哪些其他选项。我假设我必须让子控件通知他们有数据绑定的父级,并且父级需要跟踪哪些有数据绑定,哪些没有,当它们都有数据绑定时,它可以执行它的操作。
我有一个用户控件,它作为一个容器来容纳更多的用户控件。
一旦所有子控件都有数据绑定,我需要执行某些访问检查。
我希望我可以附加到 usercontrol.databound 事件,但似乎没有。
一旦其他用户控件具有数据绑定,我还必须在父用户控件上执行哪些其他选项。我假设我必须让子控件通知他们有数据绑定的父级,并且父级需要跟踪哪些有数据绑定,哪些没有,当它们都有数据绑定时,它可以执行它的操作。
您不需要让子控件通知父控件。查看ASP.Net 页面:生命周期。您需要将代码放在 PreRender 事件中的容器用户控件中。这在回发事件之后执行。
基于ASP.net 页面生命周期事件文章,我使用了这个:
protected void Page_PreRenderComplete(object sender, EventArgs e)
{
if (!IsPostBack) //only at 1st load
UpdateSelection();
}
protected void UpdateSelection()
{
UpdateSelection(listItems.SelectedValue);
}
protected void listItems_SelectedIndexChanged(object sender, EventArgs e)
{
UpdateSelection();
}
在我的例子中,UpdateSelection 正在从下拉列表中选择的文件加载 XML 数据(开始时指向索引 0),并且需要页面上的一些 CheckBoxLists 首先从其他 XML 文件中获取它们的项目,以便它们允许基于 XML 数据检查项目的代码
从那时起 UpdateSelection 只是在下拉列表 SelectedIndexChanged 事件中被调用(那些做 PostBacks 所以在 PreRenderComplete 我忽略它们以避免两次做 UpdateSelection)