Asp.net页面生命周期

页面初始化          Page_Init  

加载View State      LoadViewState   

回发数据处理      LoadPostData   

页面加载          Page_Load   

回发通知          RaisePostDataChangedEvent  

回发事件处理     RaisePostBackEvent  

页面预渲染       Page_PreRender   

保存             viewstate SaveViewState   

Page渲染         Page_Render   

Page 卸载       Page_UnLoad  

今天测试了一个bug,动态生成控件,但是状态会乱掉的一个问题.

页面如下:

一个checkboxlist,一个button.

根据你选择的checkboxlist 值,点击button会根据这个值生成相应数据的控件(

一个htmltablerow,两个htmltablecell,各加一个textbox和一个checkboxlist.

问题是如果先点了3,并且修改了生成checkboxlist的状态,

第二次再点击2,则动态生成的checkboxlist的状态会乱掉.

 
 

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{ }

else

{

foreach (ListItem item in CheckBoxList1.Items)

{

if(item.Selected)

AddControl(item.Value);

}

}

}

 
 

public void AddControl(string count)

{

int cnt = 0;

int.TryParse(count, out cnt);

for (int i=0;i<cnt;i++)

{

 
 

HtmlTableRow tr = new HtmlTableRow();

HtmlTableCell tc = new HtmlTableCell();

tc.Controls.Add(new TextBox());

HtmlTableCell tc2 = new HtmlTableCell();

Panel pn = new Panel();

//pn.ID = "panel" + cnt.ToString() + "_" + i.ToString();

CheckBoxList cb = new CheckBoxList()

;

//cb.ID = "checklist"+cnt.ToString()+"_"+i.ToString();

cb.Items.Add(new ListItem("test1", "test1"));

cb.Items.Add(new ListItem("test2", "test2"));

cb.Items.Add(new ListItem("test3", "test3"));

pn.Controls.Add(cb);

tc2.Controls.Add(pn);

tr.Cells.Add(tc);

tr.Cells.Add(tc2);

filter2.Rows.Add(tr);

 
 

}

 

}

原因:viewstate保存控件的状态,但是它需要控件的uniqueID,我最初没有在动态生成的checkboxlist上指定一个ID,所以viewstate无法根据ID进行判断控件的状态.

解决方案:给动态 生成的控件加上ID即可.

注意事项:要在page_load里面把创建控件的方法执行.

Asp.net web form 动态生成控件的注意事项的更多相关文章

  1. Asp.net中使用文本框的值动态生成控件的方法

    这篇文章主要介绍了Asp.net中使用文本框的值动态生成控件的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下 看到一个网友,有论坛上问及,动态的生成checkbox控件,在文本框中输入一个“花 ...

  2. Silverlight动态生成控件实例

    刚学习Silverlight,做了一个动态创建控件的实例 实现结果:根据已有的控件类名称,得到控件的实例化对象 实现思路1:就是定义一个模板文件,将类名做为参数,在silverlight中使用Srea ...

  3. WPF: WrapPanel 容器的数据绑定(动态生成控件、遍历)

    原文:WPF: WrapPanel 容器的数据绑定(动态生成控件.遍历) 问题:        有一些CheckBox需要作为选项添加到页面上,但是数目不定.而为了方便排版,我选择用WrapPanel ...

  4. Winforn中使用代码动态生成控件

    场景 有时候需要根据配置文件在窗体中使用代码动态生成控件. 比如读取xml配置文件中的节点数量,然后在窗体中生成指定数量的RadioGroup控件. 实现 新建一个窗体,在窗体的加载完之后的事件中 p ...

  5. (五)ASP.NET中动态生成控件

    今天被问到如何在ASP.NET 页面中动态创建一批控件,并且希望在后续代码中能访问到这些动态创建的控件.我用下面的例子来解释这个问题 ================================= ...

  6. Unity UGUI动态生成控件

    一. 首先你得先清楚RectTransform组件的一些程序控制 1. 先得到UGUI控件上面的RectTransform组件 RectTransform rtr = gameObject.GetCo ...

  7. (四)动态生成控件,点击button添加控件

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. c# winform动态生成控件与获取动态控件输入的值

    差不多有2年没有写winform程序,一直都是写bs.最近项目需要,又开始着手写一个小功能的winform程序,需要动态获取xml文件的节点个数,生成跟节点个数一样的textbox, 最后还要获取操作 ...

  9. 周末充电之WPF(三 ) .后台动态生成控件

    布局 -连连看: 代码: private void Window_Loaded_1(object sender, RoutedEventArgs e) { //动态创建行 ; i < ; i++ ...

随机推荐

  1. 2 Orchard汉化资源包的使用

    Orchard安装完毕之后我们就可以在后台尝试做一些基本的操作感受下Orchard提供的一些功能,比如添加一个页面.菜单.文章什么的.也可以试着新建一些部件.布局之类的感受下.个人建议摆弄一下了解下就 ...

  2. jQuery中常用的元素查找方法

    $("#myELement") 选择id值等于myElement的元素,id值不能重复在文档中只能有一个id值是myElement所以得到的是唯一的元素 $("div&q ...

  3. 与众不同 windows phone (43) - 8.0 相机和照片: 镜头的可扩展性, 图片的可扩展性, 图片的自动上传扩展

    [源码下载] 与众不同 windows phone (43) - 8.0 相机和照片: 镜头的可扩展性, 图片的可扩展性, 图片的自动上传扩展 作者:webabcd 介绍与众不同 windows ph ...

  4. Jquery Validation 多按钮,多表单,分组验证

    真正做到了 多按钮的验证. 在用户输入的时候就可以验证,而网上大部分多按钮验证都是必须要用户点击按钮后才可以验证. 研究了两天终于弄出来了,不知道两天是过长还是过段,现在分享给小伙伴们. 小伙伴们支持 ...

  5. 技巧题---Single boy

    Description Today is Christmas day. There are n single boys standing in a line. They are numbered fo ...

  6. Laravel 5如何在中间件中获取路由参数?

    以官方文档中间件篇的年龄为例子进行了修改 路由部分 Route::get('test/age/{age}',[ 'middleware' => 'old', 'uses'=>'Test@t ...

  7. 【iOS】Quartz2D基本图形

    一.画线段 - (void)drawRect:(CGRect)rect { // Drawing code // 1.获得图形上下文 CGContextRef ctx = UIGraphicsGetC ...

  8. react与redux学习资料的整理

    **重点内容**React学习 1.新手入门可以访问react的官方网站,如果英语不是特别好的同学可以访问中文版的,具体链接http://reactjs.cn/react/index.html 首页有 ...

  9. SQL数据库基础(七)

    主键 数据库主键是指表中一个列或列的组合,其值能唯一地标识表中的每一行.这样的一列或多列称为表的主键,通过它可强制表的实体完整性.当创建或更改表时可通过定义 PRIMARY KEY约束来创建主键.一个 ...

  10. ASP.NET本质论第一章网站应用程序学习笔记2

    1.初步走进ASP.NET 上篇笔记我们讲述了服务器监听问题,这篇我们就要讲述具体的请求处理了,ASP.NET所涉及的类大多数定义在System.Web程序集中. 在.NET中,程序集管理的最小逻辑单 ...