2014-03-06 26 views
0

我在c#中有2個datagridviews。讓我們稱他們爲dgv1和dgv2。 dgv1綁定到從SQL Server填充的DataTable dt1。 dgv2綁定到DataTable dt2。通過在Enter上覆制dt1中的行來填充dt2。在DataTable中增加數量或ImportRow

在dt2我有一個額外的列'QUantity',當用戶想要添加已存在的行時應該增加。

代碼從DT1複製行DT2:

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

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

如何檢查是否行已在DT2基於存在一列這是主要的,增加數量,如果它不存在,或者如果它不importrow?

回答

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; 

編輯錯誤固定

+0

我不太瞭解這部分 「博士[dt2.PrimaryKey [0]」,我得到錯誤:「附加信息:列'primary_key_column_name'不屬於表。「我錯過了一些東西。 – Milan

+0

表達式'dr [dt2.PrimaryKey [0]]'具有以下含義 - 從'dr'行獲取值,以及'dt2'初級名稱的列。我已經更新了示例以修復該錯誤。 – Dmitry