【问题标题】:How to calculate totals of wpf datagrid column with dataset如何使用数据集计算 wpf datagrid 列的总数
【发布时间】:2012-12-17 05:14:27
【问题描述】:

我正在尝试找出在 wpf 中计算 DataGrid 列总值的最佳方法。

  • 我正在使用数据集在我的 DataGrid 中显示来自 sql 的数据(以及用于更新的 tableAapter)
  • 我希望在 DataGrid 中编辑数字时动态更新信息
  • 我希望总和显示在 DataGrid 下方的标签/文本框或页脚中

这样做的最佳做法是什么?

【问题讨论】:

    标签: c# wpf dataset wpfdatagrid calculated-columns


    【解决方案1】:

    您可以监听会导致列中的值发生变化的各种事件,然后在触发事件时通过调用下面的“calculateTotal()”之类的方法来计算总数。

    DataTables 事件在这里定义:here

    private int colTotal = 0; // class level
    
    public Myclass()
    { 
        // Add a ColumnChanged event handler for the table.
        MyDataTable.ColumnChanged += new DataColumnChangeEventHandler(Column_Changed);
        // wire up more event handlers here..
    }
    
    private static void Column_Changed(object sender, DataColumnChangeEventArgs e )
    {
       calculateTotal();
    }
    
    // calculate total of specified column
    void calculateTotal()
    {
       colTotal = myDataSet.Tables["myTable"].Compute("SUM(myColumnName)", String.Empty);
    } 
    

    colTotal 将是绑定到您的文本框或标签的公共属性

    public int ColTotal
    {
        get 
        { 
          return colTotal; 
        }
        set
        {
          colTotal= value;
          OnPropertyChanged("ColTotal");
        }
    }
    

    【讨论】:

    • 另外两个问题;什么是 dsPoint 以及如何将文本框绑定到公共属性?
    • 我想通了。非常感谢!
    • 一个额外的问题。如果我想在其中添加 Where 子句,我将如何执行此行? colTotal = myDataSet.Tables["myTable"].Compute("SUM(myColumnName)", String.Empty)
    • WHERE 子句应该过滤掉什么?
    • 我只想在布尔属性列设置为 0 的情况下计算表的某些部分
    【解决方案2】:

    您必须在 DataSet 表行或 DataGrid 中使用 for 循环或 while,将其求和并在标签中显示结果

    您可以在数据集表列上使用Compute

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-01
      • 2013-01-27
      • 1970-01-01
      • 1970-01-01
      • 2018-11-23
      • 1970-01-01
      相关资源
      最近更新 更多