各位好,向大家请教个问题,是这样的,我在页面上有一个GridView控件GridView1,两个文本框txtname,txtvalue和一个按钮button1,我现在想要实现的功能是这样的,我在txtname和txtvalue中填写上数据,然后按button1,这时往DataTable dt中的dt增加一列,列名为txtname所填写的字符串,这一列中各行的值都为txtvalue所填写上的值.然后把dt绑定到GridView1中去,在显示时,显示刚才所增加的列的列表头必须为刚才所增加列的列名,要求是所按一下按钮,增加一列,同时把所增加的一列显示到GridView1中去,真不知该怎么实现,在此请大家帮帮忙.先在此谢谢大家了.

解决方案 »

  1.   

    我也知道要重新绑定DT啊,问题是怎样在重新绑定到GridView1 中去时,显示其列表头
      

  2.   

    在后台重新生成一个 GRIDVIEW,写到HTML里
      

  3.   

                DataTable dt = ds.Tables[0];
                string[] col = 所有的列.Split(new Char[] { ',' });
                for (int i = 0; i < col.Length - 1;i++ ){                GridViewTemplate temp = new GridViewTemplate(DataControlRowType.DataRow, col[i]);
                    TemplateField field = new TemplateField();
                    field.HeaderText = ...;
                    field.ItemTemplate = temp;
                    
                    GridView1.Columns.Add(field);
                }
                DataView dv = new DataView(dt);
                GridView1.DataSource = dv;
                GridView1.DataBind();需要实现一个接口:ITemplate
    public class GridViewTemplate:ITemplate
    {
        private DataControlRowType templateType;
        private string columnName;    public GridViewTemplate(DataControlRowType type, string colname){      templateType = type;
          columnName = colname;
        }    public void InstantiateIn(System.Web.UI.Control container){        if(templateType == DataControlRowType.DataRow){            LiteralControl label = new LiteralControl();
                
                label.DataBinding += new EventHandler(tb_DataBinding);
                container.Controls.Add(label);
            }
        }    private void tb_DataBinding(object sender, EventArgs e)
        {
            LiteralControl lb = (LiteralControl)sender;
            GridViewRow container = (GridViewRow)lb.NamingContainer;
            string str = ((DataRowView)container.DataItem)[columnName].ToString();
            lb.Text = ...;
        }
    你修改一下就可以了
      

  4.   

     lizheng__114  谢谢你,我试一下,
    也谢谢大家的回答
      

  5.   

    //在DataTable里添加两列
    DataTable.Columns.add(new dataColumn("Name",typeof(string));
    DataTable.Columns.add(new dataColumn("Value",typeof(string));
    //为这两列赋值
    for(int i=0;i<DataTable.rows.count;i++)
    {
        DataTable.Rows[i]["Name"]=txtname.Text;
        DataTable.Rows[i]["Value"]=txtvalue.Text;
    }
    GridView1.DataSource=DataTable;
    GridView1.DataBind();
      

  6.   

    虾米哦,好东西。我正好也在找这样的程序方法,不过我的是DropDownList实现动态添加GridView 行值。抛砖引玉试试看。(*^__^*)...嘻嘻