在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); }