总结(一下uc1为需要动态加载的控件)
1. 通常是放在GridView之类控件的模板中,所以事件执行顺序是在页面OnLoad之后开始控件自己的Init和Load。
2. 通常这个需要动态加载的控件很可能是一个用户控件Usercontrol。
3. 通常控件的初始和数据绑定是在自己的Load中做的,所以页面的onLoad无法找到uc1,所以uc1自己的onload事件绑定数据时没有需要的必要参数。
4. 根据以上3条情况,你可以在GridView的Edit相关事件或者把控件显示出来的相关事件中对控件必要属性赋值,而不是在页面的load事件。
5. 最重要的一点就是以下这个例子:
foreach (ListItem li in RadioButtonListJobs.Items)
{
if (li.Value == this.SelectedJob.ID)
{
li.Selected = true;
break;
}
}
{
if (li.Value == this.SelectedJob.ID)
{
li.Selected = true;
break;
}
}
这样的代码如果不是动态加载就OK,而li.Seleted赋值在动态加载的时候由于复杂的加载控件的"追赶论" ,
这个属性赋值后所产生的对RadioButtonList.SelectedIndex或者实际效果是无效的,通过测试需要用这样的代码:
for (int i = 0; i < RadioButtonListJobs.Items.Count; i++)
{
if (RadioButtonListJobs.Items[i].Value == this.SelectedJob.ID)
{
RadioButtonListJobs.SelectedIndex = i;
break;
}
}
{
if (RadioButtonListJobs.Items[i].Value == this.SelectedJob.ID)
{
RadioButtonListJobs.SelectedIndex = i;
break;
}
}
写成这样,选中效果才出来。
6. 以上是个人在自己项目环境下的总结和理解。