在gridview中添加行c#

时间:2011-06-02 11:12:57

标签: c# asp.net gridview datatable

我是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();

4 个答案:

答案 0 :(得分:4)

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

以下代码可以解决您的问题...

这里我正在使用现有的数据源,再添加两行......

再绑定它
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();
}

答案 1 :(得分:1)

@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();

答案 2 :(得分:0)

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

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也是对的

答案 3 :(得分:0)

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

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