【问题标题】:Increment quantity or ImportRow in DataTable在 DataTable 中增加数量或 ImportRow
【发布时间】:2014-03-06 22:58:12
【问题描述】:

我在 c# 中有 2 个数据网格视图。让我们称它们为 dgv1 和 dgv2。 dgv1 绑定到从 SQL 服务器填充的 DataTable dt1。 dgv2 绑定到 DataTable dt2。 dt2 是通过在 Enter 上从 dt1 复制行来填充的。

在 dt2 中,我有一个额外的列“数量”,当用户想要添加已经存在的行时,应该增加它。

将行从 dt1 复制到 dt2 的代码:

 DataRowView currentDataRowView = (DataRowView)dgv1.CurrentRow.DataBoundItem;
 DataRow dr = currentDataRowView.Row;

 dt2.ImportRow(dr);
 dgv2.DataSource = dtInvoiceItems;

如何检查基于 dt2 的列中是否已经存在行,如果存在则增加数量,如果不存在则增加数量?

【问题讨论】:

    标签: c# winforms datagridview


    【解决方案1】:

    通过主键查找行:DataRow row = dt2.Rows.Find(primary_key_value); 其中primary_key_value可以通过dr[dt2.PrimaryKey[0]]获取。
    增加数量:row["QUantity"] = (int)row["QUantity"] + 1;.
    结果代码:

    DataRowView currentDataRowView = (DataRowView)dgv1.CurrentRow.DataBoundItem;
    DataRow dr = currentDataRowView.Row;
    
    DataRow row = dt2.Rows.Find(dr[dt2.PrimaryKey[0].ColumnName]);
    if (row == null)
        dt2.ImportRow(dr);
    else
        row["QUantity"] = (int)row["QUantity"] + 1;
    

    编辑错误修复

    【讨论】:

    • 我不太明白这部分“dr[dt2.PrimaryKey[0]]”,我得到错误:“附加信息:列'primary_key_column_name'不属于表。”我错过了一些东西。
    • 表达式dr[dt2.PrimaryKey[0]] 具有以下含义 - 从dr 行和具有dt2 主名称的列中获取值。我已更新示例以修复该错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    相关资源
    最近更新 更多