动态加载控件

参考文章:http://blog.csdn.net/yicko/archive/2005/04/16/349740.aspx

1、加载的是普通的控件,不是用户控件。用户控件用Loadcontrol,而普通控件则是新建对象,再加入到Controls中

2、可以加到各级容器的Controls中

3、定位通过对style的修改来完成。可以参考手工添加的控件的style。

4、自动具备ViewState,但其加载时间是在page_load 和控件事件响应之间。所以,在Page_load事件中,不能获得动态控件的状态。

动态控件和视图状态

在运行时动态创建控件时,控件的某些信息存储在随页呈现的视图状态中。但在将页回发到服务器时,先在 Page.Init 事件中实例化非动态控件(在页上定义)并加载视图状态信息,然后才能重新创建(通常在 Page_Load 处理程序中)动态控件。因此在动态控件创建之前,视图状态将暂时不与页的控件同步。在运行 Page_Load 事件之后,调用控件事件处理方法之前,将保持的视图状态信息加载到动态创建的控件中。

多数情况下,此视图状态处理模型都可以很好地工作。通常您将动态控件添加到容器的控件集合的末尾。因此,为动态控件存储的视图状态信息成为相应容器的视图状态结构末端的附加信息,并且页可以在控件创建之前忽略它。

但是,动态创建的控件的视图状态信息将在两种情况下会出问题:

  • 如果您在现有控件之间插入动态控件。
  • 如果您动态插入控件,并随后在往返期间使用不同的值重新插入它们。

如果在现有控件之间插入动态控件,该动态控件的视图状态信息将插入到视图状态结构的相应位置。在发送页并加载视图状态时,动态控件还不存在;因此,视图状态中的附加信息将不会对应于正确的控件。结果通常是出现表明存在无效强制转换的错误。

如果您在每次往返期间重新插入,则每次动态创建的控件都将从上述控件集的视图状态中选取属性值。在很多情况下,可以通过将容器控件的 EnableViewState 属性设置为 false 来避免此问题。在本例中,将不会保存有关动态控件的任何信息,并且与后续版本的控件之间不存在任何冲突。

http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/vbcon/html/vbtskaddingcontrolstowebformspageprogrammatically.asp

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏守望轩

Visual Studio 2008 每日提示(四)

#031、 把编辑器的背景变成黑色 原文地址:http://blogs.msdn.com/saraford/archive/2007/09/06/did-yo...

3195
来自专栏无原型不设计

【Mockplus教程】复制/粘贴/克隆

1. 复制和粘贴 选中组件后,鼠标右击,在弹出菜单中选择“复制”,然后在需要粘贴的位置鼠标右击,菜单中选择“粘贴”即可。 也可以选中组件后使用快捷键Ctr...

3187
来自专栏python学习之旅

Python+Selenium笔记(七):WebDriver和WebElement

(一)  WebDriver WebDriver提供许多用来与浏览器交互的功能和设置,通过WebDriver的功能和一些方法,来实现与浏览器窗口、警告、框架和弹...

3435
来自专栏Youngxj

hislider自适应幻灯片焦点图-emlog插件

1604
来自专栏微信小开发

微信小程序开发-常见问题

知晓程序员,专注微信小程序开发的程序员! 好久没写文章,今天总结一下小程序开发过程中遇到的问题,有不对的地方,欢迎各位指正~ 1、域名必须是HTTPS2、inp...

2539
来自专栏十月梦想

响应式媒体查询media的用法

        media媒体查询响应式可以实现什么效果?对于不同尺寸的设备相应不同的样式,但是不能兼容移动和pc端的全响应兼容.

1102
来自专栏cnblogs

关于HTML面试题汇总之H5

一、H5有哪些新特性,移除了哪些元素?如何处理h5新标签的浏览器兼容性问题,如何区分html和html5 1. html5不在是SGL(通用标记语言)的一个子集...

2695
来自专栏编程微刊

混合开发

1673
来自专栏Python研发

购物时添加数量

831
来自专栏游戏杂谈

Chrome滚动条透明的问题

在做一个小应用的时候,给一个面板设置了透明度(opacity:.9),在浏览页面的时候,发现滚动条居然透明了,如下图所示:

1981

扫码关注云+社区

领取腾讯云代金券