首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataGridViewRow计数

DataGridViewRow计数
EN

Stack Overflow用户
提问于 2021-07-21 15:12:20
回答 2查看 72关注 0票数 1

逻辑

代码语言:javascript
复制
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)。

截图

代码语言:javascript
复制
// 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的名字

问题

  1. 如何修复重复的bug
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-21 16:49:10

当灯不等于Table时,逻辑失败。在循环DataGridView中的所有行时。

代码语言:javascript
复制
foreach (DataGridViewRow row in selectedItems.Rows)

因此,假设您的selectedItems已经有2行(表和灯)。现在searchValue有了“灯”。您正在循环selectedItems中的所有行。对于第一次迭代,“表”将不等于“照明灯”,并将进入“照明灯”行。

逻辑应该如下所示:

代码语言:javascript
复制
    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
票数 1
EN

Stack Overflow用户

发布于 2021-07-21 16:03:21

对临时列表(两个块)进行缓存:

代码语言:javascript
复制
// 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()
        });

到临时列表中,并在末尾添加新的一次(临时列表)!

代码语言:javascript
复制
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()
            });
 }

只是一个假设-试试看!

问候

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68472090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档