2013-02-12 1 views
1

У нас есть приложение WPF, в котором мы используем DataGrid для одной формы. Теперь мы хотим рассчитать общее количество столбцов «AMOUNT» этого datagrid в событии Winddow_Loaded, поэтому он может отображать общее количество столбцов AMOUNT в одном текстовом поле , когда форма загружается. Итак, как выполнить итерацию по всем строкам в DATAGRID & Вычислить общее количество столбцов «AMOUNT».Рассчитать SUM столбца «Сумма» в DataGridTemplateColumn DATAGRID в WPF

Как показать это в нижнем колонтитуле WPF Datagrid.?

+0

Как вы заполнить 'DataGrid'? –

+0

Я заполнил DataGrid, добавив в него вручную строки. Когда мы открываем форму в режиме EDIT, в это время DATA будет извлекаться из базы данных. Итак, теперь, когда мы открываем форму в режиме EDIT, DATAGRID заполняется из базы данных, как перебирать ее? –

ответ

2

BindDataGrid до DataTable. После этого вы можете просто перебирать все строки:

 double sum = 0; 
     foreach (var row in myTable) 
     { 
      sum += double.Parse(row["AMOUNT"].ToString()); 
     } 
     myTextBox.Text = sum.ToString() 
+0

Хорошо, я попробую и дам вам знать. Спасибо за это –

+0

Не могли бы вы помочь конвертировать мой DATAGRID в DATATABLE? –

+0

Я преобразовал свой DATAGRID в DataTable. –

1

Функция для преобразования DataGrid в DataSet:

namespace WpfApplication1 
{ 
    static class ExtClass 
    { 
    public static DataSet ToDataSet<T>(this IList<T> list) 
    { 
     Type elementType = typeof(T); 
     DataSet ds = new DataSet(); 
     DataTable t = new DataTable(); 
     ds.Tables.Add(t); 

     //add a column to table for each public property on T 
     foreach (var propInfo in elementType.GetProperties()) 
     { 
      Type ColType = Nullable.GetUnderlyingType(propInfo.PropertyType) ?? propInfo.PropertyType; 

      t.Columns.Add(propInfo.Name, ColType); 
     } 

     //go through each property on T and add each value to the table 
     foreach (T item in list) 
     { 
      DataRow row = t.NewRow(); 

      foreach (var propInfo in elementType.GetProperties()) 
      { 
       row[propInfo.Name] = propInfo.GetValue(item, null) ?? DBNull.Value; 
      } 

      t.Rows.Add(row); 
     } 

     return ds; 
    } 

    } 
} 

EDIT: отформатирован расстояние, чтобы весь код шоу-вверх в кодоблок