0

次の 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;

        }
    }

}

合計列の合計を見つけてラベルに追加できる方法を見つけようとしていますが、成功しません。これは 2 番目のクエリで実行できますが、可能な限り避けたいと思います。この問題にどのようにアプローチすればよいですか?

4

1 に答える 1

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.";

編集:コードにコピーして貼り付けるだけでよいように変更しました。

于 2012-08-11T18:52:43.270 に答える