在绑定C#,ASP.net之后在gridview中添加新行

在此处输入图像描述

我想在绑定后向gridview添加一个新的空行,如下图所示,单击下面的链接按钮。 如果在其中输入任何数据,gridview内的文本框应保持不变。 只想添加一行。 请帮我。 提前致谢。

您可以尝试以下代码

protected void Button1_Click(object sender, EventArgs e) { DataTable dt = new DataTable(); if (dt.Columns.Count == 0) { dt.Columns.Add("PayScale", typeof(string)); dt.Columns.Add("IncrementAmt", typeof(string)); dt.Columns.Add("Period", typeof(string)); } DataRow NewRow = dt.NewRow(); NewRow[0] = TextBox1.Text; NewRow[1] = TextBox2.Text; dt.Rows.Add(NewRow); GridView1.DataSource = dt; GridViewl.DataBind(); } 

这里的payscale,incrementamt和period是数据库字段名。

您可以直接运行此示例。

aspx页面:

                     

C#代码:

 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { grd.DataSource = GetTableWithInitialData(); // get first initial data grd.DataBind(); } } public DataTable GetTableWithInitialData() // this might be your sp for select { DataTable table = new DataTable(); table.Columns.Add("PayScale", typeof(string)); table.Columns.Add("IncrementAmount", typeof(string)); table.Columns.Add("Period", typeof(string)); table.Rows.Add(1, "David", "1"); table.Rows.Add(2, "Sam", "2"); table.Rows.Add(3, "Christoff", "1.5"); return table; } protected void btnAddRow_Click(object sender, EventArgs e) { DataTable dt = GetTableWithNoData(); // get select column header only records not required DataRow dr; foreach (GridViewRow gvr in grd.Rows) { dr = dt.NewRow(); TextBox txtPayScale = gvr.FindControl("txtPayScale") as TextBox; TextBox txtIncrementAmount = gvr.FindControl("txtIncrementAmount") as TextBox; TextBox txtPeriod = gvr.FindControl("txtPeriod") as TextBox; dr[0] = txtPayScale.Text; dr[1] = txtIncrementAmount.Text; dr[2] = txtPeriod.Text; dt.Rows.Add(dr); // add grid values in to row and add row to the blank table } dr = dt.NewRow(); // add last empty row dt.Rows.Add(dr); grd.DataSource = dt; // bind new datatable to grid grd.DataBind(); } public DataTable GetTableWithNoData() // returns only structure if the select columns { DataTable table = new DataTable(); table.Columns.Add("PayScale", typeof(string)); table.Columns.Add("IncrementAmount", typeof(string)); table.Columns.Add("Period", typeof(string)); return table; } 
 protected void TableGrid_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowIndex == -1 && e.Row.RowType == DataControlRowType.Header) { GridViewRow gvRow = new GridViewRow(0, 0, DataControlRowType.DataRow,DataControlRowState.Insert); for (int i = 0; i < e.Row.Cells.Count; i++) { TableCell tCell = new TableCell(); tCell.Text = " "; gvRow.Cells.Add(tCell); Table tbl = e.Row.Parent as Table; tbl.Rows.Add(gvRow); } } } 

尝试使用克隆技术。

 { DataGridViewRow row = (DataGridViewRow)yourdatagrid.Rows[0].Clone(); // then for each of the values use a loop like below. int cc = yourdatagrid.Columns.Count; for (int i2 = 0; i < cc; i2++) { row.Cells[i].Value = yourdatagrid.Rows[0].Cells[i].Value; } yourdatagrid.Rows.Add(row); i++; } } 

这应该工作。 我不确定绑定是如何工作的。 希望它不会阻止这种工作。

如果您使用数据集绑定到网格中,则可以在填写sql数据适配器后添加该行:

adapter.Fill(DS); ds.Tables(0).Rows.Add();