在gridview中添加行c#

我是asp.net的新手。 我想知道如何以编程方式在gridview中添加行。 我能够做到,但它只是显示最新的添加。 这是我的代码:

DataTable dt = new DataTable(); dt.Columns.Add("Question"); dt.Columns.Add("Answer"); DataRow dr = dt.NewRow(); dr["Question"] = txtQuestion.Text; dr["Answer"] = txtAnswer.Text; dt.Rows.Add(dr); dt.AcceptChanges(); gvQnA.DataSource = dt; gvQnA.DataBind(); 

这是因为您每次都在创建新表并将其与网格绑定

如下代码可以解决您的问题……

在这里我采用现有的数据源并通过再添加两行来再绑定它…

 DataTable dt = gridView.DataSource as DataTable; if (dt != null) { DataRow dr = dt.NewRow(); dr["Question"] = txtQuestion.Text; dr["Answer"] = txtAnswer.Text; dt.Rows.Add(dr); dt.AcceptChanges(); gvQnA.DataSource = dt; gvQnA.DataBind(); } 

@Pranay是正确的。此外,您还可以通过使用DataTable作为属性来实现。

  private DataTable Dt { set { ViewState.Add("Dt", value); } get { return (DataTable)ViewState["Dt"]; } } 

 DataRow dr = Dt.NewRow(); dr["Question"] = txtQuestion.Text; dr["Answer"] = txtAnswer.Text; Dt.Rows.Add(dr); Dt.AcceptChanges(); gvQnA.DataSource = Dt; gvQnA.DataBind(); 

您在代码中添加了一行,这就是为什么它显示一行。 如果添加了多行,则会显示正确的结果

 DataTable dt = new DataTable(); dt.Columns.Add("Question"); dt.Columns.Add("Answer"); DataRow dr = dt.NewRow(); dr["Question"] = txtQuestion.Text; dr["Answer"] = txtAnswer.Text; dt.Rows.Add(dr); **DataRow dr = dt.NewRow(); dr["Question"] = "2nd row"; dr["Answer"] = "2nd row"; dt.Rows.Add(dr);** dt.AcceptChanges(); gvQnA.DataSource = dt; gvQnA.DataBind(); 

可能是@Pranay也是对的

嘿,请检查一下。 这可能对你有帮助

 DataTable dataTable = new DataTable(); int columnsCount = // Set the number of the table's columns here. for (int columnIndex = 0; columnIndex < columnsCount; columnIndex++) { DataColumn dataColumn = new DataColumn(); // Assign dataColumn properties' values here .. dataTable.Columns.Add(dataColumn); } int rowsCount = // Set the number of the table's rows here. for (int columnIndex = 0; columnIndex < columnsCount; columnIndex++) { DataRow dataRow = new DataRow(); dataRow["ColumnName"] = // Set the value here .. dataTable.Rows.Add(dataRow); }