zoukankan      html  css  js  c++  java
  • Asp.Net页面添加控件方法和原理

    因为项目需要,如何在Asp.Net页面添加控件。

    其实博客员都给出了答案,本文只是做了一些测试和总结

    Asp.Net页面添加控件问题的关键就是原本在页面加载的时候所有的控件初始化操作都应该完成,动态加载将加载的过程延迟到了事件被触发之后,因此在页面回发后, 因为会有一次新的页面加载过程,显然这时候动态加载的控件是不存在的,但是用户预期的答案是显示已经加载的信息。这时候如果可能我们最好在加载的过程中进 行控件的重新加载和数据绑定。

     按照一般人的思维想法,都会使用

     public void AddTextBoxs()
        {
            TableRow tr = new TableRow();
            TableCell tc1 = new TableCell();
            TextBox t = new TextBox();
            t.ID = "tb" + Table1.Rows.Count;
            tc1.Controls.Add(t);
            TableCell tc2 = new TableCell();
            DropDownList dpl = new DropDownList();
            dpl.ID = "dpl" + Table1.Rows.Count;
            for (int i = 0; i < 10; i++) dpl.Items.Add(i.ToString());
            tc2.Controls.Add(dpl);
            tr.Cells.Add(tc1);
            tr.Cells.Add(tc2);
            Table1.Rows.Add(tr);
    }

    然后在一个button里添加click事件

     protected void Button1_Click(object sender, EventArgs e)
        { 
            AddTextBoxs();
        }

    程序测试,页面是可以生成相关的控件。

    问题出在,如果你再按其他按钮会发现你添加的动态控件消失啦,更别提如何取值拉?

    根据查找答案,原因是每次按钮后,页面重新post一次,必须重新添加相关的控件  所以在formload event中添加

        protected void Page_Load(object sender, EventArgs e)
        {

            if (ViewState["Count"] != null)
            {
                for (int i = 0; i < Convert.ToInt16(ViewState["Count"]); i++)
                    AddTextBoxs();
               }
        }

       protected void Button1_Click(object sender, EventArgs e)
        {
            AddTextBoxs();
            if (ViewState["Count"] == null) AddButton();
            ViewState["Count"] = Convert.ToInt16(ViewState["Count"]) + 1;
        }
  • 相关阅读:
    log4j 日志分级处理
    http接口调用,传递json格式带双引号问题
    测试输出方法执行时间
    关于 propertychange 兼容性问题
    表结构的修改
    固定table表头
    tomcat 的log4j配置问题
    ie 导出不行,不兼容问题,或只出现后缀文件无法识别
    Spring3.x错误----java.lang.ClassNotFoundException:org.aspectj.weaver.reflect.ReflectionWorld$ReflectionWorldException
    Spring3.x错误----java.lang.ClassNotFoundException:org.aopalliance.inter.MethodInterceptor
  • 原文地址:https://www.cnblogs.com/meetweb/p/1500217.html
Copyright © 2011-2022 走看看