如何在DataGridView中插入添加的行和更新编辑的行
本文关键字:更新 编辑 添加 插入 DataGridView | 更新日期: 2023-09-27 18:13:18
我有一个显示购买信息的表单,在这个表单中我有一个DataGridView,它的列是根据数据库上的表动态生成的。此DGV包含有关所选购买项目的信息。
下面是我如何在运行时在现有的DataGridView中生成列的示例:
foreach (ColumnDGV columnDGV in columnsDGV)
{
DataGridViewTextBoxColumn col = new DataGridViewTextBoxColumn();
col.Name = columnDGV.A02_CAMPO;
col.HeaderText = columnDGV.A02_TITULO;
col.DataPropertyName = columnDGV.A02_CAMPO;
this.dataGridView.Columns.Add(col);
}
对象ColumnDGV包含要创建的列的信息。
然后从列列表中选择列的名称,并根据这些列执行sql查询:
private void CarregarConteudoDGV()
{
SolicitCompraBLL solicitCompraBLL = new SolicitCompraBLL();
// Gets the columns' names to be used in the SELECT statement.
List<string> columnsNames = this.CamposDGV.Select(c => c.A02_CAMPO).ToList();
// Returns a DataTable containing the items of the selected purchase.
this.dataGridView.DataSource = solicitCompraBLL.ObterItensSolicitacao(columnsNames, this.B11_NUM);
}
当用户单击保存按钮时,我只是遍历DGV中的所有行并将其值添加到嵌套的List中,其中每个项都是字符串[2]的列表,其中位置0包含列名,位置1包含其值。然后我将这个List传递给一个方法,该方法创建sql命令来更新记录。
我已经可以在数据库中保存每个项目的更改,但我还必须插入添加的项目。我怎么知道哪些项目应该插入,哪些项目应该更新?
当您在DataBase中插入对象时,通常您的对象还没有Id。要更新的对象必须具有已存在的Id。现在您应该看到对象是否有Id。如果Id为0(或不存在),则插入它,否则更新它。