WPF C#获取DataGrid列的总和

时间:2015-06-30 02:00:00

标签: c# wpf datagrid

每次触发事件(可能是CelLEditEnding)时,我都需要对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());

问题是只有一行受到影响,实际得到总结并显示在标签中的一行是随机的。如您所见,我添加了一个消息框来显示DataGrid中的总行数,每次结果为1。我不知道如何解决这个问题,我非常喜欢编程并且有技术术语的问题。非常感谢任何帮助。

2 个答案:

答案 0 :(得分: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));
}

答案 1 :(得分:0)

for (int i = 0; i < dataGrid.Items.Count; ++i)      
    sum += (decimal.Parse((dataGrid.Columns[4].GetCellContent(dataGrid.Items[i]) as TextBlock).Text));