Mohammad Sharify Ответов: 5

Добавление строк в datagridview с существующими столбцами


dataGridView1.Rows[0].Cells[0].Value = texstudentID.Text;
dataGridView1.Rows[0].Cells[1].Value = texstudentName.Text;
dataGridView1.Rows[0].Cells[2].Value = texstudentFamily.Text;
dataGridView1.Rows[0].Cells[3].Value = texstudentNationID.Text;
dataGridView1.Rows[0].Cells[4].Value = texstudentField.Text;
dataGridView1.Rows[0].Cells[5].Value = openFileDialog1.FileName;
dataGridView1.Rows[0].Cells[6].Value = texstudentNationID.Text;
dataGridView1.Rows.Add();


я хочу добавить строку после последней строки в dataGridView1.

но я сталкиваюсь с этой ошибкой :
Строки не могут быть программно добавлены в коллекцию строк DataGridView, если элемент управления привязан к данным.

плиз, помогите мне!

5 Ответов

Рейтинг:
35

Thanks7872

Обратитесь к этой ссылке.У него есть решение именно того, что вы ищете.

Строки не могут быть программно добавлены в коллекцию строк datagridview, если элемент управления привязан к данным[^]

[Дополнительный]:

Строки не могут быть программными...[- узел MSDN][^]

[Обновление]:

//create datatable and columns,
DataTable dtable = new DataTable();
dtable.Columns.Add(new DataColumn("Column 1"));
dtable.Columns.Add(new DataColumn("Column 2"));
 
//simple way create object for rowvalues here i have given only 2 add as per your requirement
object[] RowValues = { "", "" };
 
//assign values into row object
RowValues[0] = "your value 1";
RowValues[1] = "your value 2";
 
//create new data row
DataRow dRow;
dRow = dtable.Rows.Add(RowValues);
dtable.AcceptChanges();
 
//now bind datatable to gridview... 
gridview.datasource=dbtable;
gridview.databind();

С уважением..:смеяться:


Mohammad Sharify

поблагодарить у очень многое...
но этот код (который я нашел в ссылках):
этот.Утверждать();
studentBindingSource.Конец света();
dataGridView1.Обновить();
не сработало !

Thanks7872

Если вы используете datasource для привязки вашего datagridview,то вы не можете добавить строку непосредственно в datagridview, вместо этого вы должны добавить строки непосредственно в datasource.

Mohammad Sharify

я хочу добавить строку только в datagridview,чтобы я мог удалить ее, когда захочу.

Thanks7872

См. обновленный ответ.

Mohammad Sharify

Большое спасибо, что ответили на мой вопрос!

Ayman Jaballa

Ваш ответ обновление работает просто отлично ... спасибо

Рейтинг:
2

Sergi Ortiz Gomez

Я нашел другой простой способ добавить строки.

Я использую клавишу INSERT keyb для вставки новой строки в мой DataGridView, но вы можете использовать этот код, например, в кнопке.

//capture the key press on the form
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    if (MyDataGrid.Focused && keyData == Keys.Insert)
    {
        int row = MyDataGrid.CurrentRow.Index;
        int myRows = MyDataGrid.Rows.Count - 1;   //control the insert is on the last row of the grid
        if (row == myRows)
        {
            this.insert = true;
            switch (MyDataGrid.CurrentCell.OwningColumn.Name.ToLower())
            {
                case "NumericColumn":   //here control is the column where the user press INSERT required a number
                    SendKeys.Send("0");
                    break;
                default:       //if not can insert a space
                    SendKeys.Send(" ");
                    break;
            }
        }
        else this.insert = false;
    }
    return base.ProcessCmdKey(ref msg, keyData);
}


Whis это действие имитирует нажатие пользователем пробела на последних строках, так что сетка запускает событие UserAddedRow Для меня это самый простой способ добавить новую строку в мой проект.

Счастливое кодирование


CHill60

Пожалуйста, не публикуйте несколько решений одного и того же вопроса. Как читатели должны знать, какой из них правильный? Вы можете использовать зеленую ссылку "улучшить решение", чтобы добавить дополнительную информацию к существующему решению.
Однако ни в одном из своих постов вы на самом деле не ответили на этот вопрос шестилетней давности.

Sergi Ortiz Gomez

О, Извините, я новичок на сайте и не знаю так хорошо правил, я попробую удалить предыдущий, потому что гораздо лучше этот новый solutioin.

Рейтинг:
1

idenizeni

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

Установите для свойства Showfooter GridView значение true.

<asp:gridview id="GridView1" runat="server" ShowFooter="true" onrowdatabound="GridView1_RowDataBound"></asp:gridview>


... И в событии GridView RowDataBound установите значения в нижнем колонтитуле, например так...

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
  {
      if (e.Row.RowType == DataControlRowType.Footer)
      {
          e.Row.Cells[0].Text = "value1";
          e.Row.Cells[1].Text = "value2";
          e.Row.Cells[2].Text = "value3";
          e.Row.Cells[3].Text = "value4";
          e.Row.Cells[4].Text = "value5";

      }
  }


Mohammad Sharify

Спасибо тебе
я не понимаю кодов asp :

<asp:gridview id="GridView1" runat="server" ShowFooter="true" onrowdatabound="GridView1_RowDataBound">

я работаю с C# ...
(плиз объясните выше коды!)
и я действительно хочу добавить строку только в datagridview.(не добавлять в источник данных)

idenizeni

Моя ошибка, я попал в аварию. ASP.NET настрой ума и неверно истолковал ваш вопрос. Я думаю, что пересмотренный ответ Рохана Левы-это ваш лучший выбор.

Mohammad Sharify

Большое спасибо!

idenizeni

Не забудьте отдать должное Рохану, если его ответ помог, отметив его ответ как принятое решение.

Рейтинг:
1

Member 12919915

как разместить новую строку данных между двумя строками в одной таблице


Richard Deeming

Если вы хотите задать вопрос, то ЗАДАВАТЬ ВОПРОС[^]. НЕ разместите свой вопрос как "решение" на чей-то другой вопрос!

Но имейте в виду, что вам нужно будет предоставить гораздо больше информации, чем у вас есть здесь, Если вы хотите, чтобы кто-то помог вам.

Рейтинг:
0

Member 11138754



Пример копирования строки из dataGridView и добавления новой строки в тот же dataGridView
DataTable Dt = новый DataTable();
ДТ.Колонны.Добавить("Колонка1");
ДТ.Колонны.Добавить("Column2");

Доктор строкаданных = ДТ.Невров();
DataGridViewRow dgvR = (DataGridViewRow)dataGridView1.CurrentRow.Клон();
dr[0] = dgvR.Cells[0].Клон();
dr[1] = dgvR.Cells[1].Клон();

ДТ.Строк.Добавить(д-р);
dataGridView1.Источник Данных = ДТ;