一个空的GridView还没有进行绑定,已知这个GridView有7列,我如何在这个GridView中添加新行?新行显示为TextBox?

解决方案 »

  1.   

    http://msdn.microsoft.com/zh-cn/dd367973.aspx 
    看看这篇文章
      

  2.   


    TextBox txt = new TextBox();
    GridViewRow row = new GridViewRow();
    row.ColSpan = 7;
    row.Controls.Add(txt);
    GridView.Rows.Add(row);
      

  3.   

    TextBox txt = new TextBox();
    GridViewRow row = new GridViewRow();
    row.ColSpan = 7;                         ????????
    row.Controls.Add(txt);
    GridView.Rows.Add(row);
      

  4.   

    就是一个空的GridView,想添加一行,
    private void CoulmnTextBox(int coulmnNum)
        {
            this.gvMainList.Columns.Clear();
            BoundField bf0 = new BoundField();
            bf0.DataField = "ID";
            bf0.Visible = true;
            gvMainList.Columns.Add(bf0);        TemplateField tf1 = new TemplateField();
            tf1.HeaderTemplate = new MyGridViewTemplate("省份", DataControlRowType.Header,"","");
            tf1.ItemTemplate = new MyGridViewTemplate("", DataControlRowType.DataRow, "txtShiptoProvince", "ShiptoProvince");
            gvMainList.Columns.Add(tf1);        TemplateField tf2 = new TemplateField();
            tf2.HeaderTemplate = new MyGridViewTemplate("城市", DataControlRowType.Header, "", "");
            tf2.ItemTemplate = new MyGridViewTemplate("", DataControlRowType.DataRow, "txtShiptoCity", "ShiptoCity");
            gvMainList.Columns.Add(tf2);
            TemplateField tf3 = new TemplateField();
            tf3.HeaderTemplate = new MyGridViewTemplate("公里", DataControlRowType.Header, "", "");
            tf3.ItemTemplate = new MyGridViewTemplate("", DataControlRowType.DataRow, "txtDistance", "Distance");
            gvMainList.Columns.Add(tf3);        TemplateField tf4 = new TemplateField();
            tf4.HeaderTemplate = new MyGridViewTemplate("零担运输天数", DataControlRowType.Header, "", "");
            tf4.ItemTemplate = new MyGridViewTemplate("", DataControlRowType.DataRow, "txtLTLDays", "LTLDays");
            gvMainList.Columns.Add(tf4);        TemplateField tf5 = new TemplateField();
            tf5.HeaderTemplate = new MyGridViewTemplate("整车运输天数", DataControlRowType.Header, "", "");
            tf5.ItemTemplate = new MyGridViewTemplate("", DataControlRowType.DataRow, "txtFTLDays", "FTLDays");
            gvMainList.Columns.Add(tf5);        for (int i = 1; i <= coulmnNum; i++)
            {
                TemplateField tf = new TemplateField();
                tf.HeaderTemplate = new MyGridViewTemplate("价格" + i.ToString(), DataControlRowType.Header, "", "");
                tf.ItemTemplate = new MyGridViewTemplate("", DataControlRowType.DataRow, "txtTL" + i.ToString(), "TL" + i.ToString());
                gvMainList.Columns.Add(tf);
            }
        }
    ///////////////
    public class MyGridViewTemplate : ITemplate
        {
            private string strColumnName;
            private string textID;
            private DataControlRowType dcrtColumnType;
            private string strColumnText;        /// <summary> 
            /// 动态添加模板列 
            /// </summary> 
            /// <param name="strColumnName">列名 </param> 
            /// <param name="dcrtColumnType">列的类型 </param> 
            public MyGridViewTemplate(string strColumnName, DataControlRowType dcrtColumnType, string textID, string strColumnText)
            {
                this.strColumnName = strColumnName;
                this.dcrtColumnType = dcrtColumnType;
                this.textID = textID;
                this.strColumnText = strColumnText;
            }        public void InstantiateIn(Control ctlContainer)
            {
                switch (dcrtColumnType)
                {
                    case DataControlRowType.Header: //列标题 
                        Literal ltr = new Literal();
                        ltr.Text = strColumnName;
                        ctlContainer.Controls.Add(ltr);
                        break;
                    case DataControlRowType.DataRow: //模板列内容——加载TextBox 
                        MyTextBox tb = new MyTextBox();
                        tb.ID = textID;
                        tb.BorderWidth = 1;
                        tb.Enabled = true;
                        tb.DataBinding += new EventHandler(this.tb_DataBinding);
                        ctlContainer.Controls.Add(tb);
                        break;
                }
            }
            void tb_DataBinding(object sender, EventArgs e)
            {
                MyTextBox hi = (MyTextBox)sender;
                GridViewRow container = (GridViewRow)hi.NamingContainer;
                //关键位置
                //使用DataBinder.Eval绑定数据
                //ProName,MyTemplate的属性.在创建MyTemplate实例时,为此属性赋值(数据源字段)
                //hi.Attributes.Add("onclick", "alert('" + DataBinder.Eval(container.DataItem, strColumnText).ToString() + "');");
             //   hi.Text = DataBinder.Eval(container.DataItem, strColumnText).ToString();
                hi.Text = ((DataRowView)container.DataItem)[strColumnText].ToString(); 
            }
        }
      

  5.   

    Selecting这个事件可以控制绑定
      

  6.   

    private void BindGridView()
        {
            DataTable dt = new DataTable();        dt.Columns.Add("accountname");
            dt.Columns.Add("name");
            DataRow dr = dt.NewRow();
            dr["accountname"] = "111111111";
            dr["name"] = "111111name";
            dt.Rows.Add(dr); dr = dt.NewRow();
            dr["accountname"] = "22222";
            dr["name"] = "22222name";
            dt.Rows.Add(dr);        this.GridView1.DataSource = dt;
            this.GridView1.DataBind();
            dt.Dispose();
        }
      

  7.   

    试试这个方法吧,我就这样做的
    http://hi.baidu.com/dongtso/blog/item/16812f1f91d75fc0a7866990.html
      

  8.   

    再或者你用这个http://www.censs.com/Study/ShowArticle.asp?ArticleID=312