Добавить строки в gridview c # - PullRequest
1 голос
/ 02 июня 2011

Я новичок в asp.net.Я хочу знать, как программно добавить строку в сетку.Я смог сделать это, но он просто отображает последнее дополнение.Вот мой код:

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 ]

4 голосов
/ 02 июня 2011

Это потому, что вы каждый раз создаете новую таблицу и связываете ее с сеткой

Выполните код, указанный ниже, чтобы решить вашу проблему ...

здесь я беру существующий источник данных и связываю егоеще раз, добавив еще две строки ...

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 голос
/ 02 июня 2011

@ 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();
0 голосов
/ 02 июня 2011

Эй, просто проверь это. Это может помочь тебе

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);        
}
0 голосов
/ 02 июня 2011

Вы добавили одну строку в ваш код, поэтому он показывает одну строку.Если бы вы добавили несколько строк, это показало бы правильный результат

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 также прав

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...