目的:根据gridview中的记录条数,在页面中动态添加n个textbox,点击保存按钮(btnSave)后,获取n个textbox中的值。
难点:
1、创建控件不能在Page_Load或Page_Init事件中,因为此时还不知道gridview中有多少条记录。
2、textbox中需要获得用户录入的内容,如果每次点击按钮刷新页面,就要重新创建动态控件,用户录入的内容是不是就丢失了?

解决方案 »

  1.   

    用js在前台根据gridview的条数写吧
      

  2.   

    这个问题我刚遇到过。我用的方法是,动态生成dataTable
    生成后再绑定到GridView上去,
    前提:先将Textbox设置成模板列。先添加上去。
    总结下:1、添加模板列textBox
           2、动态生成DataTable
           3、绑定到GridView上去
    不知道你明白没。。呵呵。。希望对你有帮助
      

  3.   

    data_bound时间中 就可以动态添加
      

  4.   

     把textbox也放到另外一个gridview里面 那样就简单
      

  5.   

    这些TextBox干什么用?如果gridview中间某行删除了,或者它重新绑定了,TextBox们怎么办?你的描述根本没有达到逻辑一致把白话说明白的程度,是不会给你写代码的。
      

  6.   

    感谢tuzibai、Comeonzhou,看来也只有这个办法了。本来我的布局是gridview+formview+table(包含textbox),从业务角度这样布局看起来层次清晰,但是如果没有办法,我改成:formview+gridview(含模板列)。
      

  7.   


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;namespace BlueCMS.Web
    {
        public partial class WebForm1 : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (IsPostBack)
                {
                    CreateTxtBox();
                }
            }        protected void Button1_Click(object sender, EventArgs e)
            {
                CreateTxtBox();
            }        private void CreateTxtBox()
            {
                Panel1.Controls.Clear();
                for (int i = 0; i < GridView1.Rows.Count; i++)
                {
                    Label lab = GridView1.Rows[i].FindControl("xx") as Label;
                    TextBox txt = new TextBox();
                    txt.ID = "txt" + i;
                    txt.Text = lab.Text;
                    Panel1.Controls.Add(txt);
                }
            }
        }
    }
      

  8.   

    把你的需求写成一个稍微有点用的东西。不将 n 纠缠于跟gridview的行数配对,而是抛开任何控件实现,使用面向需求数据模型语言说明白。
      

  9.   


    这样做asp.net设计很上路啊。
      

  10.   


    那为什么不把TextBox放到GridView中?
      

  11.   

    可以,只是个人感觉,gridview+formview+textbox从业务处理上层次更清晰,另一个原因,也想学习一下动态控件的处理。