Vb.net 如何对DataGridView的多列值求和
我正在为我的研究所做一个项目,在尝试对DataGridView列求和时遇到了问题。我需要计算总金额 这是我的密码:Vb.net 如何对DataGridView的多列值求和,vb.net,datagridview,Vb.net,Datagridview,我正在为我的研究所做一个项目,在尝试对DataGridView列求和时遇到了问题。我需要计算总金额 这是我的密码: Private Sub add() Dim i As Integer = 0 dgvStock.Rows.Add() dgvStock.Rows(dgvStock.RowCount - 1).Cells("srno").Value = txt_billno.Text dgvStock.Rows(dgvStock.RowCount - 1).Cells
Private Sub add()
Dim i As Integer = 0
dgvStock.Rows.Add()
dgvStock.Rows(dgvStock.RowCount - 1).Cells("srno").Value = txt_billno.Text
dgvStock.Rows(dgvStock.RowCount - 1).Cells("itemcode").Value = cmbItemCode.Text
dgvStock.Rows(dgvStock.RowCount - 1).Cells("itemname").Value = cmbItemName.Text
dgvStock.Rows(dgvStock.RowCount - 1).Cells("qty").Value = txtQty.Text
dgvStock.Rows(dgvStock.RowCount - 1).Cells("Rate").Value = txtRate.Text
dgvStock.Rows(dgvStock.RowCount - 1).Cells("Discount").Value = txtPerDisc.Text
dgvStock.Rows(dgvStock.RowCount - 1).Cells("PerTax").Value = txtPerVat.Text
txtAmount.Text = txtRate.Text * txtQty.Text
txtAmount.Text -= txtPerDisc.Text
' txtAmount.Text += txtPerDisc.Text / 100
dgvStock.Rows(dgvStock.RowCount - 1).Cells("Amount").Value = txtAmount.Text
txtGridAmt.Text = dgvStock.SelectedRows(0).Cells("Amount").Value
txtdiscRs.Text = dgvStock.SelectedRows(0).Cells("Discount").Value
txtVatRs.Text = dgvStock.SelectedRows(0).Cells("PerTax").Value
txtTotAmt.Text = txtGridAmt.Text
End Sub
Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click
Try
add()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
'formclear()
End Sub
这是我的程序快照,它会让我的问题更清楚
您添加或减去值的方法似乎不正确。因为.Text是字符串,而不是整数。尝试更改此选项:
txtAmount.Text = txtRate.Text * txtQty.Text
txtAmount.Text -= txtPerDisc.Text
为此:
txtAmount.Text = CStr(CInt(txtRate.Text) * CInt(txtQty.Text))
txtAmount.Text = CStr(CInt(txtAmount.Text) - CInt(txtPerDisc.Text))
---编辑---
请尝试以下方法:
Dim NewRow As String() = {"", "", "", "", "", "", "", ""}
dgvStock.Rows.Add(NewRow)
---编辑2---
嗯:
删除前:
TotalAmount -= dgvStock.Rows(dgvStock.SelectedRows(0)).Cells("Amount").Value
由于您调用了
dgvStock.Rows.Add()
,最后一行现在是空的吗?你调试过它并看到它在做什么吗?我在你的代码中没有看到任何总和。你到底想总结什么?目前什么不起作用?基本上,我想将txtgridamt与txtmount相加以放入txttoamt中,但当dgv再添加一列时,单击“添加”按钮,以便我可以更新txtgridamt的值时,它保持不变。您的描述令人困惑。。。。您的意思是添加行而不是列吗?我看不到您添加了列,但new sale=新行,对吗?你想在总量文本框中看到7000行吗?谢谢,顺便说一句,我已经知道了,并改为Convert.toInt3,但我的主要目标是在dgv有新行时增加值,而我添加新行时,它会获得所选行的值。这是我程序的快照,它会让我的问题更清楚谢谢,但我无法理解你,因为您正在将空行添加到dgv。它不是在清除概念,而是在单元格中添加空字符串,这样就不会复制文本。它不是null,因为在VB中null什么都不是。对象而不是引号,如果您还没有尝试过,请这样做。:)
TotalAmount -= dgvStock.Rows(dgvStock.SelectedRows(0)).Cells("Amount").Value