关于UpdatePanel的奇怪现象

代码蜗牛sky 2006-10-26 12:26:12
在页面中添加了两个UpdatePanel和一个ScriptManager。

再在其中一个UpdatePanel里面添加的一个自定义Web用户控件。

通过后台代码动态向这个Web用户控件中添加信息条目

最后再往UpdatePanel里面添加一个LinkButton,运行项目。

结果发现,当点击那个LinkButton后(不执行任何操作),返回的页面竟然没有了原来在Web用户控件中显示的条目。

在浏览器中查看源文件,发现里面已经包含了条目的html代码

手动刷新页面后又能看到这些条目了,如果不使用UpdatePanel则没有这个现象

请问这是为什么?有什么解决方法,谢谢!
...全文
262 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
代码蜗牛sky 2006-10-27
  • 打赏
  • 举报
回复
To handsomebird123:

我知道UpdatePanel 是更新区域

将LinkButton添加到UpdatePanel里面是源于实现某一应用的限制,而且也没规定说不能把LinkButton放到UpdatePanel 中去

请你说话放尊重点,我是想知道出现这种现象的根本原因,而且,无论我是将LinkButto放在UpdatePanel 内还是外,出现的问题都是一样.
代码蜗牛sky 2006-10-27
  • 打赏
  • 举报
回复
我使用UpdatePanel是因为很多相关的资料都以其作为例子

另为也因为最初觉得使用UpdatePanel可能会方便点,也没有认真考虑更新层次的问题

十分感谢triffang和sp1234的回答.

我迟点再试下triffang提供的方法,看看看看能否解决这个问题
handsomebird123 2006-10-27
  • 打赏
  • 举报
回复
........

最后再往UpdatePanel里面添加一个LinkButton,运行项目。

结果发现,当点击那个LinkButton后(不执行任何操作),
------------
UpdatePanel 是更新区域,发生事件的控件是在 UpdatePanel 之外,然后再 UpdatePanel 写触发器,并根据条件异步更新。
你还是先去弄明白原理吧。
  • 打赏
  • 举报
回复
我感觉,如果学atlas,就把UpdatePanel“看淡”一些,多用专门定制的那些控件作为容器而不要用UpdatePanel来作为容器。如果用UpdatePanel作为基础,那么慢慢地你的程序就脱离了atlas项目组的轨迹,在开发自己的框架体系了!
  • 打赏
  • 举报
回复
我没有用过 atlas(或者说asp.net ajax),不过从原理上来说,updatePanel确实不能完成那些除了控件的innerHtml命令所能完成的功能以外的很多复杂功能,例如上面所说的需要向页面注册新的脚本函数、执行新脚本的功能。updatePanel本来就是一个极其弱、帮你完成类似于“Hello World”程序的简单框架。

记得我前几天在csdn说过,UpdatePanel应该看作是atlas中被遗弃、用来让其他简单Ajax框架没有生存空间的手段,而它本身功能并不强到可以用来作为应用程序基础。

不过你可以将所有遇到的问题都自己解决,这也可以说是自己开发一个自己的Ajax框架了。如果在UpdatePanel基础上相着手将整个应用程序全面变为Ajax的,需要对asp.net、dhtml+javascript等本省就非常了解,并且自己解决很多深层次问题。
triffang 2006-10-27
  • 打赏
  • 举报
回复
Dflying Chen的说法
原因在于,Beta 1中所有的客户端脚本统一由ScriptManager管理,而ScriptManager是在PreRender时期遍历页面中的控件并输出必要的客户端脚本,但模板中的内容通常也是在PreRender时才生成的,这样二者错失了沟通的机会,自然模版中的Extender Control所必须的客户端脚本将不会被发送至浏览器,也就最终导致了Extender Control无法在模板控件中使用。

解决方法就是在PreRender之前,例如Load事件中强制让页面生成模版控件或数据绑定控件的内容,这样在PreRender的时候ScriptManager就可以正确找到他们了:
protected void Page_Load(object sender, EventArgs e)
{
GridView1.DataBind(); // 数据绑定控件用这个

object o = Login1.Controls; // 模版控件用这个
}
代码蜗牛sky 2006-10-27
  • 打赏
  • 举报
回复
我对atlas不是很了解,现在估计可能是atlas本身和自定义Web用户控件之间的问题

最后只能自己用JavaScript实现了想要功能,问题总算是解决了,但甚是无奈~

希望对atlas有深入研究的朋友能指点一二,谢谢^_^
triffang 2006-10-26
  • 打赏
  • 举报
回复
哦,以前那个版本是有很多问题的!
新版本发布了,去掉了很多BUG.
现在不叫Atlas了,叫ASP.NET ajax 1.0

官方网站
http://ajax.asp.net/default.aspx
代码蜗牛sky 2006-10-26
  • 打赏
  • 举报
回复
http://www.microsoft.com/downloads/details.aspx?FamilyId=D746076A-3352-4407-B9D5-832BA4DFFC7B&displaylang=en

就是上面连接的那个
代码蜗牛sky 2006-10-26
  • 打赏
  • 举报
回复
2006年7月28日的那个版本,在微软官方网站下载的
triffang 2006-10-26
  • 打赏
  • 举报
回复
你现在用的是什么版本了
代码蜗牛sky 2006-10-26
  • 打赏
  • 举报
回复
我换成新版的ASP.NET ajax 1.0后,布局竟然全部都乱套了~
代码蜗牛sky 2006-10-26
  • 打赏
  • 举报
回复
不使用UpdatePanel的时候一切正常,将那个自定义Web用户控件移进UpdatePanel后就出现上述的现象了。
  • 打赏
  • 举报
回复
你把UpdatePanel去掉也能正常保留那个动态添减加的控件吗?会不会你根本就还没有把不使用atlas时的简单程序搞好?
代码蜗牛sky 2006-10-26
  • 打赏
  • 举报
回复
看了tesling提供的地址内容,没什么帮助,还是未能确认导致该现象的原因
代码蜗牛sky 2006-10-26
  • 打赏
  • 举报
回复
已经试了新版本了,问题依旧,有谁知道出现这种现象的原因是什么?
tesling 2006-10-26
  • 打赏
  • 举报
回复
新版本的UpdatePanel好用的很
http://www.cnblogs.com/sharpaxe/archive/2006/10/25/539867.html?Pending=true#Post
代码蜗牛sky 2006-10-26
  • 打赏
  • 举报
回复
发新版本了吗?这我倒是没有留意,刚上去看了是10月20日发的,等会试试

62,074

社区成员

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

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

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

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