2015-06-30 11 views
1

Мне нужно суммировать все значения в DataGrid каждый раз при запуске события (возможно, CelLEditEnding) и отображать его на ярлыке. У меня есть следующий код:WPF C# Получить общую сумму столбца DataGrid

private void tblData_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e) 
    { 
     double sum = 0; 
     //System.Windows.MessageBox.Show(tblData.SelectedItems.Count.ToString()); 
     for (int i = 0; i < tblData.SelectedItems.Count; i++) 
     { 
      TextBlock tb = tblData.Columns[3].GetCellContent(tblData.SelectedItems[i]) as TextBlock; 
      double test = Convert.ToDouble(tb.Text); 
      sum = sum + test; 
      lblTotal.Content = "$ " + sum.ToString(); 
      //System.Windows.MessageBox.Show(sum.ToString()); 

Проблема заключается в том, что только одна строка пострадавших, одна строка, которая на самом деле получает суммируются и отображаются в ярлыке является случайным. Как вы можете видеть, я добавил поле mesage, чтобы показать мне общее количество строк, которые находятся в DataGrid, каждый раз результат равен 1. Я не знаю, как обойти эту проблему, я очень хочу программировать и проблемы с техническим жаргоном. Любая помощь приветствуется.

+0

Я думаю, я знаю, что проблема заключается в том, что я только счетный «SelectedItems», но как я могу рассчитывать каждую строку в этой колонке? Имя столбца - «Всего». – hectormtnezg

+0

'System.Windows.MessageBox.Show (tblData.SelectedItems.Count.ToString());' Это показывает количество, которое вы ожидаете от него. – AnjumSKhan

ответ

0
for (int i = 0; i < tblData.Items.Count; ++i) 
{ 
    //(decimal.Parse((tblData.SelectedCells[3].Column.GetCellContent(item) as TextBlock).Text)) 
    sum += (decimal.Parse((tblData.Columns[3].GetCellContent(tblData.Items[i])as TextBlock).Text)); 
} 
0
for (int i = 0; i < dataGrid.Items.Count; ++i)  
    sum += (decimal.Parse((dataGrid.Columns[4].GetCellContent(dataGrid.Items[i]) as TextBlock).Text)); 
Смежные вопросы