【问题标题】:Add rows in a gridview c#在gridview c#中添加行
【发布时间】:2011-06-02 11:12:57
【问题描述】:

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

【问题讨论】:

  • 你只添加一行...所以你只看到一行是正常的。
  • 最新版是什么意思,我们只看到一行
  • 您需要将该行添加到您绑定到网格的实际数据源中,gvQnA.DataSource = dt; 将删除以前的数据并显示当前数据。
  • 嘿,如果你得到了你想要的信息,别忘了将答案标记为已接受

标签: c# asp.net gridview datatable


【解决方案1】:

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

执行以下代码可能会解决您的问题...

在这里,我正在获取现有数据源并通过再添加两行来再次绑定它...

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

【讨论】:

  • 我认为示例中有一个错字,当您写 DataTable dataTableif (dataTable != null) 时,您的意思是 dt 而不是 dataTable
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      嘿,看看这个。这可能对你有帮助

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-11-08
        • 2013-10-29
        • 2017-01-28
        • 1970-01-01
        • 1970-01-01
        • 2021-08-14
        • 2011-08-07
        相关资源
        最近更新 更多