专栏首页听雨堂动态加载控件

动态加载控件

参考文章: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 条评论
登录 后参与评论

相关文章

  • 动态控件的新思路

            常常有如此感叹:动态控件好加,但是状态维持困难。就是说,加入动态控件很容易,关联处理事件也不难,但是对于控件的状态把握,却很麻烦。往往需要在lo...

    用户1075292
  • ASP.Net Web Page深入探讨

    这篇文章经典,看过之后大受启发。值得一看!看来ASP.NET跟JSP其实是一样的,本质上没区别,ASP.NET能做到的JSP一样可以做到,反之亦然。只不过ASP...

    用户1075292
  • 用CSS制作可交换带事件处理的图片按钮

          按钮是网页最常用的控件了,怎样设计一个更好看的按钮,这两天试验了几种方法:       1、用Javascript交换图片的方式先在网页中制作图片,...

    用户1075292
  • Qt编写控件属性设计器9-数据库采集

    数据库作为数据源,在很多组态软件中使用非常多,指定数据库类型,填写好数据库连接信息,指定对应的数据库表和字段,采集间隔,程序按照采集间隔自动采集数据库数据,绑定...

    feiyangqingyun
  • Qt编写控件属性设计器5-属性中文

    在上一篇文章中就提到过,使用qtpropertybrowser来加载属性,对应加载到的属性是英文的,也就是控件类中Q_PROPERTY描述的变量名称,如何变成中...

    feiyangqingyun
  • C# C/S控件库HZHControls使用指南

    HZHControls是一个基于.Net Framework4.0,扁平化的、漂亮的、开源的C/S控件库,这是官网的介绍,也就是作者专门开发的一套可以在C/S客...

    zls365
  • Qt编写控件属性设计器1-加载插件

    加载插件是整个属性设计器的第一步要打通的功能,插件中的控件都加载不了,后面就别搞别玩下去了没法玩的,要从一个动态库中加载出来控件,肯定需要用到反射机制,以前做....

    feiyangqingyun
  • Qt编写控件属性设计器6-动态属性

    之前就提过,Qt的属性机制强大到爆,这次的动态属性功能就是要让他爆,很难想象只要一行代码即可widget->setProperty("value", value...

    feiyangqingyun
  • ASP.NET验证控件的使用

    自认为做了几年Web,就很了解Asp.net,但最后才发现不是这个样子的。首先没有系统的学习,其次没有深入的实践,从学校到公司,一直在使用别人写好的控件...

    thz
  • Android开发笔记(一百四十九)约束布局ConstraintLayout

    约束布局ConstraintLayout是Android Studio 2.2推出的新布局,并从Android Studio ...

    用户4464237

扫码关注云+社区

领取腾讯云代金券