动态加载 Web用户控件难题,比较急

mahongxi 2004-11-25 03:55:05
页面上面 是一些 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




...全文
229 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
aero_boy 2004-11-29
  • 打赏
  • 举报
回复
你在page_load中加载控件,在不能在这初始化它, 初始化应当放在
if(!this.IsPostBack)
{
//TODO: 初始化。。。
}
mahongxi 2004-11-25
  • 打赏
  • 举报
回复
To goody9807()
我现在也按那种方法做的,在ListChange时,记录要加载的Detail模块,然后在
Page_Load时加载,但存在这样一个问题
因ListChange之后就触发Page_Load 然后才是记录,所以每次展示的总是上次选中的.

自己UP
goody9807 2004-11-25
  • 打赏
  • 举报
回复
http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpguide/html/cpconDevelopingUserControlsInCode-BehindFile.asp

http://msdn.microsoft.com/library/CHS/cpguide/html/cpconHandlingPageletEvents.asp


goody9807 2004-11-25
  • 打赏
  • 举报
回复
http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpguide/html/cpconDevelopingUserControlsInCode-BehindFile.asp
goody9807 2004-11-25
  • 打赏
  • 举报
回复
http://search.csdn.net/Expert/topic/2196/2196088.xml?temp=.9971125
2002pine 2004-11-25
  • 打赏
  • 举报
回复
一,你在page_load中加载就,
二,你在LIST控件中暴露一个属性,是选中的项,
三,在postback是就可根据此属性,做要做的事
mahongxi 2004-11-25
  • 打赏
  • 举报
回复
老牛
此时得不到list中的选中记录啊.
aero_boy 2004-11-25
  • 打赏
  • 举报
回复
你在page_load中加载就行啊,
记住,不能用if(!this.IsPostBack)来判断加不加,而应该是每次加载是都加载,不管是不是postback
wangxiaohu 2004-11-25
  • 打赏
  • 举报
回复
靠!
你写的也太长了
没有太清楚你的意思
或许if(!this.IsPostBack)的判断能帮你点忙
呵呵
iuhxq 2004-11-25
  • 打赏
  • 举报
回复
晕,学习
jxzhang615 2004-11-25
  • 打赏
  • 举报
回复
帮你顶!

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧