动态加载 Web用户控件难题,比较急
页面上面 是一些 ListBox 的记录,有些是表示人员,有些表示机构,下面是一个PlaceHolder,
已经建立好2个Web用户控件,一个实现对人员的编辑和展示一个实现对机构的编辑和展示.
现在想在ListBox记录选择改变时,下面动态加载对应的Web用户控件,并显示相关记录内容,而且能实现修改.
现在采用方案1:
Listbox autoPostBack, 在它的ItemOnChange事件里,判断记录类型(是人还是机构),以此用LoadControl方式加载对应的WebUserControl,Add 到 PlaceHolder中去,赋值给aspx中的一个变量(叫它DetailMod吧),然后调用方法在DetailMod中显示相关数据.此外,由于页面一Post之后,这个DetailMod变量就没了,所以在其它需要的时候都要调用创建它的代码,所以我写了一个属性:
protected DetailModuleBase _detailMod;
protected DetailModuleBase DetailMod
{
get
{
if (_detailMod != null)
return _detailMod;
else
{
判断记录类型(是人还是机构),
以此用LoadControl方式加载对应的WebUserControl,Add 到 PlaceHolder中去,
赋值给_detailMod
}
}
}
问题:
显示数据没问题,但修改后,点完成按钮后,在WebUserControl模块中得不到输入内容(均为空),可能是由于
修改->点完成->Post->页面再Load->进入完成按钮事件-> DetailMod.更新数据 (由于前面已经Post了,调用DetailMod属性时进行了创建操作) ->发现刚修改输入的数据没了.
也就是与Post前那个表单没"对应"上,又跑出一个新表单(为空).
方案2
把动态创建WebUserControl动作写在Page_Load中,可以实现查看和修改都没问题
问题:
但我在PAGE_LOAD中不能判断上面的List中选中的记录是哪一条.
(因为我的LIST其实也是一个用户控件来的,它还没有Page_load)
各位,我对asp.net不甚了解,这个问题已经搞我2天了,请大家一定要帮小弟这个忙.
描述的可能不清楚,有空的朋友可以加我的MSN在线上讨论一下.谢谢大家.
msn
enjoylinux [at] hotmail.com