Как суммировать отфильтрованные строки в текстовом поле с измененным текстом? - PullRequest
0 голосов
/ 26 января 2019

У меня есть текстовое поле для события TextChanged, которое позволит пользователю фильтровать строки сетки данных. Объект данных связывается с сетью данных для источника данных. У меня также есть итоговая строка, добавленная в сетку данных через таблицу данных для суммирования всех строк. Я хотел бы динамически суммировать строки при каждой фильтрации. Как мне этого добиться?

  private filterTextBox_TextChanged(object sender, EventArgs e)
  {
     (dgv1.DataSource as DataTable).DefaultView.RowFilter = 
     string.Format("Name LIKE '%{0}'", textBoxFilter.Text);
  }

  private string SumColumn(string rowItem)
  {
     return dataTable.AsEnumerable().Sum(x => decimal.Parse(x[rowItem].ToString(),
     System.Globalization.NumberStyles.Currency, null)).ToString("c");
  }

  private void dgv1_TotalRow()
  {
     DataRow row = dataTable.NewRow();
     row["Amount1"] = SumColumn("Amount1");
     row["Amount2"] = SumColumn("Amount2");
     row["Amount3"] = SumColumn("Amount3");
     row["Amount4"] = SumColumn("Amount4");
     dataTable.Rows.Add(row);
  }

  private void Load_DGV()
  {
     dgv1_TotalRow();
     dgv1.DataSource = dataTable;
  }

1 Ответ

0 голосов
/ 27 января 2019
private double Sum(DataGridView dgv, string ColumnName)
{
    double sum = 0;

    foreach(DataGridViewRow row in dgv.Rows)
        sum += Convert.ToDouble(row.Cells[ColumnName].Value);

    return sum;
}

Добавьте этот код в эту форму и в конце события filterTextBox_TextChanged назовите его так: TextBoxWhereYouShowSum.Text = Sum(yourDataGridView, ColumnNameToSum).ToString();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...