1

vb.net フォームに 3 つの Datagridview コントロールがあります。DGV1 は価格列、DGV2 は数量列、3 番目は合計列 DGV3 です。誰でもこれを行う方法を教えてください.DGV1 * DGV2はDGV3の合計を表示し、DVG1セル値が変更されるたびにDGV3を更新します. 以下のコードは DGV3 を更新しません。また、問題の 1 つは、DGV2 が DATA をバインドする前に DGV3 が計算され、DGV2 セル値 = 0 の場合、間違った合計が得られることです。何か案が ?感謝、

 Private Sub DGV1_CellValueChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DGV1.CellValueChanged
    Dim Tot As Int32 = 0
   DGV3.Enabled = False
    DGV3.DataSource = Nothing
    DGV3.Enabled = True

    Dim OBJ As Double
    Dim SALES As Integer
    Dim dtt As DataTable
    For Each R As DataGridViewRow In Me.DGV1.Rows
        For Each N As DataGridViewRow In Me.DGV2.Rows

            OBJ = CDbl(R.Cells(4).Value)
            SALES = CInt(CDbl(N.Cells(0).Value))
            Tot = CInt(OBJ * SALES)
            DGV3.Rows.Add(Tot.ToString)

        Next
    Next
End Sub
4

2 に答える 2

0

1 つの datagridview を使用できる場合は、次のようにします。

    Public Class Form1

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ''// Set the number of columns.
        DataGridView1.ColumnCount = 3
        DataGridView1.ColumnHeadersVisible = True

        ''// Set the column header style. 
        Dim columnHeaderStyle As New DataGridViewCellStyle()

        columnHeaderStyle.BackColor = Color.Beige
        columnHeaderStyle.Font = New Font("Verdana", 10, FontStyle.Bold)
        DataGridView1.ColumnHeadersDefaultCellStyle = columnHeaderStyle

        ''// Set column names.
        DataGridView1.Columns(0).Name = "Price"
        DataGridView1.Columns(1).Name = "Quantity"
        DataGridView1.Columns(2).Name = "Total"

        DataGridView1.Enabled = False
        DataGridView1.DataSource = Nothing
        DataGridView1.Enabled = True

    End Sub

    Private Sub DataGridView1_CurrentCellChanged(sender As Object, e As EventArgs) Handles DataGridView1.CurrentCellChanged

        ''// show the total in column 3 and update column 3 everytime column `price's` cellvalue gets changed.
        If (DataGridView1.CurrentCell.ColumnIndex = 0) Then
            ''// MsgBox("Updating column three `Total`")

            For Each R As DataGridViewRow In DataGridView1.Rows
                On Error Resume Next ''// iKNOW <-.->

                Dim price As Double = R.Cells(0).Value.ToString
                Dim quantity As Integer = R.Cells(1).Value.ToString

                ''// not the auto new new at the bottom. <`.'>
                If Not (R.IsNewRow) Then
                    Dim Tot As Double = CInt(price * quantity)
                    R.Cells(2).Value = Tot
                End If

            Next

        End If

     End Sub
 End Class
于 2013-04-14T01:50:01.683 に答える
0

空の DGV を作成し、[列の追加] を使用して必要な列を追加します。次に、[列の編集] を使用して、作成した特定の列ごとに表示する値を選択します。新しく作成されたすべての列に DataBindingsource オプションが表示されます。バインドする必要なデータソースと DisplayMember (表示したい値を含む列名) を選択します。

于 2013-09-19T08:53:30.773 に答える