zoukankan      html  css  js  c++  java
  • Asp.net web form 动态生成控件的注意事项

    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里面把创建控件的方法执行.

    Looking for a job working at Home about MSBI
  • 相关阅读:
    MySQL语句进行分组后的含有字段拼接方法
    架构基础
    自动化测试框架比较
    分布式系统中的概念--第一篇 一致性协议、一致性模型、拜占庭问题、租约
    如果两个对象具有相同的哈希码,但是不相等的,它们可以在HashMap中同时存在吗?
    分布式系统常用思想和技术总结(转)
    常用的Hash算法
    Sonar + Jacoco,强悍的UT, IT 双覆盖率统计(转)
    AWK处理日志入门(转)
    内存管理
  • 原文地址:https://www.cnblogs.com/huaxiaoyao/p/3434439.html
Copyright © 2011-2022 走看看