我有一个表单,显示有关购买的信息,在此表单中,我有一个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中的所有行并将其值添加到嵌套列表中,其中每个项目都是字符串[2]的列表,其中位置0包含列名称和位置1它的价值。然后我将此List传递给一个创建sql命令以更新记录的方法。
我已经可以保存数据库中每个项目的更改,但我还必须插入添加的项目。我如何知道应该插入哪些项目以及应该更新哪些项目?
答案 0 :(得分:1)
在DataBase中插入对象时,通常您的对象还没有ID。要更新的对象必须已存在其ID。现在您应该看到对象是否具有Id。如果Id为零(或不存在),则插入它,否则更新它。