逻辑
If `rows` > 0
loop `rows` {
if `row Name value` equal `db Name column`
- increase value
else
// it adds new row if db record is not already in grid view
- add new
}
else
// Happen only once for first input (when there is no row)
- add new这就是我试图构建的逻辑,但我有重复行问题(bug)。
截图

码
// database name column
String searchValue = dt.Rows[i]["Name"].ToString();
if (selectedItems.RowCount > 0)
{
foreach (DataGridViewRow row in selectedItems.Rows)
{
if (row.Cells[1].Value.ToString().Equals(searchValue))
{
// increase qty
row.Cells["QtyH"].Value = Convert.ToInt32(row.Cells[2].Value) + 1;
}
else
{
// Add new row
selectedItems.Rows.Add(new string[] {
dt.Rows[i]["Id"].ToString(),
dt.Rows[i]["Name"].ToString(),
"1",
dt.Rows[i]["SellPrice"].ToString(),
(item.Price * item.Qty).ToString()
});
}
}
}
else
{
// Add new row
selectedItems.Rows.Add(new string[] {
dt.Rows[i]["Id"].ToString(),
dt.Rows[i]["Name"].ToString(),
"1",
dt.Rows[i]["SellPrice"].ToString(),
(item.Price * item.Qty).ToString()
});
}PS:
selectedItems是我的DataGridView的名字
问题
发布于 2021-07-21 16:49:10
当灯不等于Table时,逻辑失败。在循环DataGridView中的所有行时。
foreach (DataGridViewRow row in selectedItems.Rows)因此,假设您的selectedItems已经有2行(表和灯)。现在searchValue有了“灯”。您正在循环selectedItems中的所有行。对于第一次迭代,“表”将不等于“照明灯”,并将进入“照明灯”行。
逻辑应该如下所示:
If `rows` > 0
{
isMatched = false;
loop `rows` {
if `row Name value` equal `db Name column`
- set isMatched to true
- increase value
}
if(!isMatched)
{
// it adds new row if db record is not already in grid view
- add new
}
}
else
// Happen only once for first input (when there is no row)
- add new发布于 2021-07-21 16:03:21
对临时列表(两个块)进行缓存:
// Add new row
selectedItems.Rows.Add(new string[] {
dt.Rows[i]["Id"].ToString(),
dt.Rows[i]["Name"].ToString(),
"1",
dt.Rows[i]["SellPrice"].ToString(),
(item.Price * item.Qty).ToString()
});到临时列表中,并在末尾添加新的一次(临时列表)!
If `rows` > 0
loop `rows` {
if `row Name value` equal `db Name column`
- increase value
else
// it adds new row if db record is not already in grid view
- add new to temp list
}
else
// Happen only once for first input (when there is no row)
- add new to temp list
at last:
foreach (var value in tempList)
{
selectedItems.Rows.Add(new string[] {
value.Id.ToString(),
value.Name,
"1",
value.SellPrice.ToString(),
(value.Price * value..Qty).ToString()
});
}只是一个假设-试试看!
问候
https://stackoverflow.com/questions/68472090
复制相似问题