日期:2014-05-17  浏览次数:20429 次

怎样动态改变用户控件里的Panel里的内容
假设有这样一个用户控件:
<asp:Panel ID="PanelAd" runat="server" CssClass="box">用户控件测试</asp:Panel>
怎样动态改变用户控件里的Panel里的内容

------解决方案--------------------
这不是用户控件,这就是一个普通的asp.net控件。
由于panel是一个容器,因此你想修改的话,可以添加一个label用于显示内容,比如:
this.Panel1.Controls.Add(new Label() { Text = "你好。" });
------解决方案--------------------
实际上出问题的地方在于,那你可能不知道如何保证控件状态。

例如你放一个Button到页面上让页面可以回发测试,然后编程调试时,时不时点击这个Button。你会发现你自己“想当然地”给Panel加入的控件,它在回发时“丢失了”,或者即使没有丢失而其状态值“重新初始化了”,或者事件无法触发了,等等。

因此你在看有关的博客、文章时要注意,要做这个测试。遇到经不起这个简单Button按钮测试的那些做法,你就不用相信。

至于该如何做,我这里就不太想说了。当没有人能够真正教你如何“动态加载控件编程”时,建议你从入门书上学习使用DataList、MultiView、ListView 等等数据绑定控件来处理这种编程,而不要考虑动态加载控件。
------解决方案--------------------
微软所提供的控件,大多都按照“傻瓜化、简单直接”的方式设计。但是asp.net控件有些“老掉牙”了,这个“动态加载机制”仍然保持在2003年以前发布的水平,10几年来就没有什么新的创意。最主要地,它需要你编程时遵循一些有些技术性要求的注意事项,而这些注意事项实际上只有你专门学习开发asp.net自定义控件时才会学到。

因此没有真正研究过最好不要随便“动态加载子控件”。如果你不幸地想当然地做了,那么你最好同时学会检测自己的程序。我上面给出的最简单的“Button回发测试”就是一个最基本的手动测试,这可以立刻检查出来有危害的代码。