【问题标题】:Sum the values of a WPF datagrid column without additional query?在没有额外查询的情况下对 WPF 数据网格列的值求和?
【发布时间】:2012-08-08 14:09:07
【问题描述】:

我正在填充以下 WPF 数据网格:

使用以下方法:

private void ButtonFilterWorkflowWhenClick(object sender, RoutedEventArgs e)
{
    var db = new DatabaseHandle();



    dataGridWorkflow.ItemsSource = db.DisplayHealthIndicator(DateTime.Now, DateTime.Now);


    labelWorkflowLastLoaded.Content = "Last Loaded at " + DateTime.Now.ToString(CultureInfo.InvariantCulture) + " with " +
                              dataGridWorkflow.Items.Count.ToString(CultureInfo.InvariantCulture) + " total events.";


}

其中引用了以下类对象:

public DataView DisplayHealthIndicator(DateTime startDate, DateTime endDate)
{
    string queryString = "[marlin].[support_retrieve_workflow_history]";

    using (SqlConnection connection = new SqlConnection(GetConnectionString()))
    {
        using (var cmd = new SqlCommand(queryString, connection))
        {
            connection.Open();

            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("date_from", startDate.Date);
            cmd.Parameters.AddWithValue("date_to", endDate.Date);

            var reader = cmd.ExecuteReader();

            var dt = new DataTable();
            dt.Load(reader);

            connection.Close();
            return dt.DefaultView;

        }
    }

}

我正在尝试找到一种方法来找到总列的总和,以便将其添加到我的标签中,但没有成功。我可以通过第二个查询来做到这一点,但我想尽可能避免这种情况。我应该如何解决这个问题?

【问题讨论】:

    标签: c# .net wpf wpf-controls wpfdatagrid


    【解决方案1】:

    您可能需要枚举 DataView 中的行,例如:

    dataGridWorkflow.ItemsSource = db.DisplayHealthIndicator(DateTime.Now, DateTime.Now);
    DataView dv = (DataView)dataGridWorkflow.ItemsSource;
    DataRowCollection drc = dv.Table.Rows;
    IEnumerator rowEnum = drc.GetEnumerator();
    int sum = 0;
    while (rowEnum.MoveNext())
    {
        sum += (int)((DataRow)rowEnum.Current)[3];//assuming the 'Total' column has index 3.
    }
    labelWorkflowLastLoaded.Content = "Last Loaded at " + DateTime.Now.ToString(CultureInfo.InvariantCulture) + " with " + sum.ToString(CultureInfo.InvariantCulture) + " total events.";
    

    编辑:我对其进行了更改,以便您可以复制并粘贴到您的代码中。

    【讨论】:

    • 恐怕我是一个初出茅庐的初中生,虽然我理解这个概念,但当我试图把它落实到位时,我失败了 - 很惨。你能详细说明一下吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-04
    • 1970-01-01
    • 2014-06-27
    • 2018-06-03
    • 1970-01-01
    相关资源
    最近更新 更多