如何在DataGridView中添加新行并用数据填充它

问题描述 投票:0回答:2

这是我的代码

Public Sub InvoicItmCall()

    'If IteDataTb.Rows.Count = 0 Then Exit Sub

    SellingDGView.Rows.Add()

    SellingDGView.Rows.Item(0).Cells(0).Value = SellingDGView.Rows.Item(0).Cells(0).Value + 1
    SellingDGView.Rows.Item(0).Cells(1).Value = IteDataTb.Rows(0).Item("IteFName")
    SellingDGView.Rows.Item(0).Cells(2).Value = IteDataTb.Rows(0).Item("IteFSizeUnit")
    SellingDGView.Rows.Item(0).Cells(4).Value = IteDataTb.Rows(0).Item("IteFSellpris")
    SellingDGView.Rows.Item(0).Cells(6).Value = IteDataTb.Rows(0).Item("IteVat")

    'Dim unused = SellingDGView.Rows.Add(rows)

End Sub

现在,该代码可以正常工作并填充在网格的第一行中,这是用于条形码扫描仪的。当我扫描一个条形码时,它将用适当的数据填充该行。但是,当我扫描另一个代码时,它将覆盖旧的行。

我希望它添加新行并向其中添加其他数据。

因此,当我在第一个项目之后扫描另一个项目时,它应该填满新行。

我该怎么做?

提前感谢:)

编辑:

我找到了解决方法

    If IteDataTb.Rows.Count > 0 Then
        For Each row As DataRow In IteDataTb.Rows
            SellingDGView.Rows.Add(row.Item("IteFName"), row.Item("IteFSizeUnit"), row.Item("IteFSellpris"), row.Item("IteVat"))
        Next row
    End If

这每次都会创建一个新行并填充它。但是现在我想填充特定的单元格。

我该怎么做?

现在,它不适当地填充了所有内容。

vb.net datagridview
2个回答
0
投票

每次需要新行时,都可以执行以下操作:

        Dim i As Integer = SellingDGView.Rows.Add()

        SellingDGView.Rows.Item(i).Cells(0).Value = i
        SellingDGView.Rows.Item(i).Cells(1).Value = IteDataTb.Rows(j).Item("IteFName")
        SellingDGView.Rows.Item(i).Cells(2).Value = IteDataTb.Rows(j).Item("IteFSizeUnit")
        SellingDGView.Rows.Item(i).Cells(4).Value = IteDataTb.Rows(j).Item("IteFSellpris")
        SellingDGView.Rows.Item(i).Cells(6).Value = IteDataTb.Rows(j).Item("IteVat")

[这里,我假设变量“ j”表示您在IteDataTb datagridview中所需的行。我的意思是您应该自己控制“ j”变量。如果您了解有关IteDataTb的更多信息,我可以为您提供帮助。


0
投票

如果您想像原来一样去做,我会这样做:

Dim index = SellingDGView.Rows.Add()
Dim newRow = SellingDGView.Rows(index)
'Dim newRow = SellingDGView.Rows(SellingDGView.Rows.Add())
Dim dataRow = IteDataTb.Rows(0)

newRow.Cells(0).Value = SellingDGView.Rows(0).Cells(0).Value + 1
newRow.Cells(1).Value = dataRow("IteFName")
newRow.Cells(2).Value = dataRow("IteFSizeUnit")
newRow.Cells(4).Value = dataRow("IteFSellpris")
newRow.Cells(6).Value = dataRow("IteVat")

如果您想使用我在第二个示例中使用的Add的更合适的重载:

For Each row As DataRow In IteDataTb.Rows
    SellingDGView.Rows.Add(SellingDGView.Rows(0).Cells(0).Value + 1,
                           row("IteFName"),
                           row("IteFSizeUnit"),
                           Nothing,
                           row("IteFSellpris"),
                           Nothing,
                           row("IteVat"))
Next

If语句毫无意义。

此外,我怀疑您是否以最佳方式使用加1的表达式获取下一个ID,但这是一个不同的问题。

© www.soinside.com 2019 - 2024. All rights reserved.