2010-08-17 18 views
0

我有一个用户控件,充当容器来容纳更多的用户控件。asp.net在儿童控制数据绑定完成后执行动作

一旦所有的子控件都有数据绑定,我需要执行某些访问检查。

我希望我可以附加到一个usercontrol.databound事件,但似乎并没有一个。

一旦其他用户控件有数据绑定,我必须对父控件usercontrol做些什么其他选择。我假设我必须让子控件通知父母他们有数据绑定,并且父母需要跟踪哪些数据绑定,哪些没有数据绑定,以及何时他们都有数据绑定可以执行其操作。

回答

0

您不需要让子控件通知父项。看看ASP.Net Page :Life Cycle。您需要将代码置于PreRender事件中的容器用户控件中。这在回发事件之后执行。

+0

我正在考虑把它作为最后的手段在预渲染。我们在预渲染之前做过这种事情的经历很糟糕,但我认为这主要是因为一个神级控制了所有逻辑,而不是每个控制都具有所需逻辑的逻辑。 – 2010-08-17 06:34:18

-1

基于ASP.net Page Life Cycle Events文章中,我已经使用这个:

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是从下拉列表(它启动指向索引0)选择一个文件加载XML数据,需要一些CheckBoxLists首先从其他XML文件中获取它们的项目,以便它们允许代码根据XML数据检查它们上的项目

从那时开始,UpdateSelection只是在下拉列表SelectedIndexChanged事件(那些事件在PreRenderComplete中执行PostBacks,我忽略它们以避免执行Update选择两次)