4

「合計」列があるDataGridViewがあります。DataGridViewは編集可能ですtrue。グリッドビューの下に、グリッドの「合計」列の合計が必要なテキストボックスがあります。私がしたことは、ユーザーがグリッドの合計列に入ると、グリッドビューの下の合計テキストフィールドに反映されます。テキストフィールドに合計を表示するために、グリッドビューの合計列を追加しました。ただし、問題は、グリッドビューの合計列に初めて入力すると、すぐに下のテキストフィールドに反映されることです。しかし、DataGridViewの合計列で同じ値を編集すると、グリッドの下のテキストフィールドに以前の値が追加され、テキストフィールドで編集した新しい値が必要になります。これを修正する方法は次のとおりです:-

private void grdCaret_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
    try
    {  
        string value = grdCaret.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
        if (e.ColumnIndex == 1)
        {
           // int val = int.Parse(value);
           // quantity = val;
           // ekundag = ekundag + quantity;
           //tbTotDag_cr.Text =ekundag.ToString();

            int quantity = 0;

            foreach (DataGridViewRow row in grdCaret.Rows)
                quantity +=(int) grdCaret.Rows[e.RowIndex].Cells[1].Value.ToString();
                //quantity +=(int) row.Cells[1].Value;

            tbTotDag_cr.Text = quantity.ToString();
        }

        if (e.ColumnIndex == 2)
        {
            float val = float.Parse(value);
            total = val;
            ekunrakam = ekunrakam + total;
            tbTotPrice_cr.Text = ekunrakam.ToString();
        }
        grdCaret.Columns[3].ReadOnly = false;
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message.ToString());
    }
}
4

3 に答える 3

0
private void dataGridView_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
  if (dataGridView.Rows.Count > 0)
   {
     Double dobTotal = 0.00;
     if (dataGridView.Columns["colAmountPaid"].Name.ToString().Equals("colAmountPaid"))
      {
       for (int i = 0; i < dataGridView.Rows.Count; i++)
       {
        dobTotal += Double.Parse(dataGridView["colAmountPaid",i].EditedFormattedValue.ToString());
       }
       txtTotal.Text = dobTotal.ToString();
      }
     }
   }
于 2012-06-14T07:36:55.130 に答える
0
<code>Private Sub EndEdit(ByVal sender As System.Object, ByVal e As EventArgs) Handles DataGridView1.CurrentCellDirtyStateChanged
        If DataGridView1.IsCurrentCellDirty Then
            DataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit)
        End If
    End Sub

<code>
    Private Sub DataGridView1_TextChanged(ByVal sender As System.Object, ByVal e As 
  System.Windows.Forms.DataGridViewCellEventArgs) Handles 
                                 DataGridView1.CellValueChanged
        If e.RowIndex = -1 Then
            isdirty = True
        End If

//All code you want to perform on change event

<code>    End Sub
</code>
于 2014-04-17T03:49:04.907 に答える