MicroHelper.Net

雷锋说.对待朋友要MicroHelper,对待敌人要害尔扑
随笔 - 74, 评论 - 431, 引用 - 7

导航

工具

关于

邮件系统不稳定,使用songdming at 263 dot net吧
PageRank

FastCounter by bCentral

 

标签

每月存档

广告



访客

 

周末,欢送同学,说到一句话:如果一直做软件的话,就写一本书how to be a professional programmer——职业程序员入门指南,教育一下俺这样的半吊子。

最近发现动态添加控件时,需要先将新控件添加到控件集合中,然后再设置新控件的属性.

比如

private void Button1_Click(object sender, System.EventArgs e)
{      {   
  Placeholder1.Controls.Clear();
  DropDownList d = new DropDownList();
  d.ID="controlID";
  Placeholder1.Controls.Add高脚杯;
  d.Width=200;
  MyDataHelper.BindControl(d, CityList.GetType() );
  ViewState["AddControl"] = true;
}

MyDataHelper.BindControl是一个绑定数据的函数

然后,在pageload里,重新载入该控件

private void Page_Load(object sender, System.EventArgs e)
{
  if ((ViewState["AddControl"]!= null) && ((bool)ViewState["AddControl"]))
  {
    DropDownList d = new DropDownList();
    d.ID="controlID";
    Placeholder1.Controls.Add高脚杯;
  }
}

这样的代码可以正常工作,postback之后ddl的属性和绑定的数据不会丢失。

但是,如果把代码的顺序颠倒一下
  ....
  // it does not work
  d.Width=200;
  MyDataHelper.BindControl(d, CityList.GetType() );
  Placeholder1.Controls.Add高脚杯;
  ....

postback之后,postback之后ddl的属性和绑定的数据丢失。


 

相关文章

打印 | 张贴于 2003-12-22 16:24:00 | Tag:Dot Net

留言反馈

#re: 动态添加控件 编辑
我也遇到了,是动态添加了,可是我怎么使用呢,添加到容器了,填写值了,可是连response一下都什么也看不到!有什么用呢
2006-11-16 13:49:00 | [匿名用户:tiara_brother@hotmail.com]
#re: 动态添加控件 编辑
对我帮助很大

ylhyh@msn.com
2005-09-02 11:13:00 | [匿名用户:ylhyh]
#re: 动态添加控件 编辑
除了显示,根本没有用,无法获取所添加控件的操作信息
2005-07-28 16:20:00 | [匿名用户:WO KAO]
#re: 动态添加控件 编辑
(0)
2004-09-20 17:55:00 | [匿名用户:(0)]
#re: 动态添加控件 编辑
at(0)
2004-09-20 17:55:00 | [匿名用户:at(0)]
#回复: 动态添加控件 编辑
@MicroHelper:

具体原因我还得学习一下ASP.NET的具体实现,现在还真说不准。不过记得在哪儿看过这样一个best practice,所以一直遵照着做,也没出过类似的错就是了。话大意是这么说的:在运行时动态创建控件后,应尽快将其加入控件层次中(也就是尽快用parent.Controls.Add将其加入指定的容器中),在这个过程中,新的控件将获得正确的UniqueID等关键信息。

也许你可以让我看一下MyDataHelper.BindControl方法的代码会对定位问题有所帮助。而且在搞清原因之前,先遵照最佳实践肯定是没错的。:)
2004-01-04 03:23:00 | [匿名用户:JGTM'2004]
#回复: 动态添加控件 编辑
呵呵,有意思,

Controls.Add高脚杯
2003-12-22 17:08:00 | [匿名用户:核桃]
对不起,目前本随笔不允许发表新评论.

Powered by: Joycode MVC Blogger System