Как заполнить datagridview источником данных
привет,
У меня есть datagridview, привязанный к таблице базы данных. dgv показывает данные элемента,
где предмет может быть всем.
при добавлении нового элемента источник данных dgv имеет 0 строк, dgv просто показывает столбцы (правильно).
чтобы добавить данные к элементу, я использую
Item_CellMouseDownчтобы добавить идентификатор элементов
к новой строке, потому что столбец id не виден в dgv.
ниже приведены две версии метода, и ни одна из них не работает правильно.
код а :
private void Item_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e) { int row = e.RowIndex; DataRow dr; if (row == SourceTable.Rows.Count) { dr = SourceTable.NewRow(); SourceTable.Rows.Add(dr); dr["ID"] = this.ID; } }
код B :
private void Item_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e) { int row = e.RowIndex; object id = Item["Id",row].Value; if (id == null || id.ToString() == string.Empty) { Item["Id",row].Value = this.ID; } }
Что я уже пробовал:
код а : элемент показывает три строки, SourceTable имеет две строки
код B : элемент показывает одну строку, SourceTable имеет 0 строк
однако это должно быть элемент показывает две строки, SourceTable имеет 1 строку
что я упускаю или что я здесь делаю не так ?
заранее спасибо
Франц
RickZeeland
И как именно вы определяете SourceTable и Item ?
j snooze
вы повторно привязываете свою сетку данных к источнику данных после добавления строки?
fheyn
@RickZeeland
частный недействительными DataGridLayout()
{
Item.DataSource = SourceTable;
Предмет.Столбцы["ID"].Visible = false;
}
DataTable SourceTable { get { return(Database.Объект DataTable(Имя); }}
Элемент-это dgvcontrol внутри mdichild frmItem. Каждая форма представляет одно
конкретный предмет (например, человек, автомобиль, улица...)
База данных-это класс, который включает в себя sqlserver и sqlite. (этот проект использует sqlite). Datatable - это таблица базового адаптера таблиц.
RickZeeland
Возможно, вам следует установить свойство dataGridView AllowUserToAddRows = false
https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.allowusertoaddrows(v=vs. 110).aspx
Также я хотел перенести SourceTable.Строк.Добавить(д-р); к нижней части, если заявление.
fheyn
прежде всего большое спасибо за ваш ответ
когда набор AllowUserToAddRows = false, dgv появляется пустым, и я вообще не могу добавлять данные (не так, как я хочу)
тем временем Я заменил таблицу базы данных локальной таблицей, которая содержит только столбец id (видимый здесь).
Я щелкаю по ячейке и получаю тот же результат : dgv показывает три строки с идентификатором в первой строке.
RickZeeland
И когда вы устанавливаете точку останова, сколько раз она попадает, когда вы щелкаете мышью ?