如何在DataGridView - vb.net中的现有项目中添加数量

时间:2016-08-19 03:18:59

标签: vb.net winforms datagridview

当项目已经在let lastSectionIndex = tableView.numberOfSections-1 let lastSectionLastRow = tableView.numberOfRowsInSection(lastSectionIndex) - 1 let lastIndexPath = NSIndexPath(forRow:lastSectionLastRow, inSection: lastSectionIndex) let cellIndexPath = tableView.indexPathForCell(cell) var cell if cellIndexPath == lastIndexPath { cell = tableView.dequeueReusableCellWithIdentifier("JoinFooterCell") as! JoinFooterCell } else { cell = tableView.dequeueReusableCellWithIdentifier(reuseIdentifier, forIndexPath: indexPath) as! JoinCell } 时存在问题,然后当我再次输入相同的项目时,数量和总数不会增加或添加。它只会列出相同的项目。

e.g。

DataGridView

输入条形码Item Code ProductName Unit Item Description Price Quantity Total Discount 06-098 Biogesic 500mg Paracetamol 5.50 1 5.50 0.00 ,它会列出TextBox中的项目。

这是我的代码:

DataGridView

2 个答案:

答案 0 :(得分:0)

我做的是遍历datagridview并查找我要插入的匹配记录,如果有一个列添加+1,如果没有插入该行。

示例:

For each row as DataGridViewRow in datagridview1.Rows
    If row.Cells(0).Value = dr("ID") Then
         row.Cells(6).Value = Integer.Parse(row.Cells(6).Value) + 1
         Exit Sub 'Exit Sub for the purpose of not triggering the row add code since there is an existing record already.
    End IF
Next

datagridview1.rows.add(....)

答案 1 :(得分:0)

在将数据放入datagridview之前,您应该使用数据处理此问题。然后,当您拥有正确的数据时,您可以将其设置为数据源。

此外,您需要使用数据表而不是逐行读取记录。填充数据表看起来像这样..

Dim myTable = new DataTable
Using adapter = New SqlDataAdapter(cmd)
    adapter.Fill(myTable)
End Using

编辑数据表看起来像这样..

For x as Integer = myTable.rows.Count - 1 to 1
    For y as Integer = x - 1 to 0
        If myTable.rows(x).Item("Item Code") = myTable.rows(y).Item("Item Code") Then
            myTable.rows(x).Item("Quantity") = myTable.rows(x).Item("Quantity") + 1
            myTable.rows(x).Item("Total") = myTable.rows(x).Item("Total") + myTable.rows(y).item("Total")
            myTable.rows(y).Delete()
        End If
    Next
Next

myTable.acceptChanges()
dgv.dataSource = myTable 'this will put all rows from myTable into the dgv

希望这有帮助!