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;
        }
  • 相关阅读:
    Something I know about WebDynpro
    Details about support package implementation
    CRM Middleware Performance Topics
    Way to configure the logon navigaion layouts via Business Roles in CRM
    DOM 常用节点类型和方法
    第一届 xdef 会议日程
    去除百度音乐盒广告的chrome插件 持续更新
    从人人网抓取高校数据信息,包括,省份 高校 院系 (提供最终SQL文件下载)
    PHP 与 JSON
    解决HTTPS 发送请求走socket问题
  • 原文地址:https://www.cnblogs.com/meetweb/p/1500217.html
Copyright © 2011-2022 走看看