0

クエリをデータテーブルに出力してからデータグリッドに出力するWMIプログラムを作成しています。現在の日付と時刻をアイテムとして配置し、作成したばかりのデータテーブルを「値」として複製する履歴ドロップダウンリストを作成したいと思います。

ドロップダウンリストの項目を選択すると、データグリッドがその時点で実行されていた以前のデータテーブルに変更されます。

これまでのコードは次のとおりですが、データテーブルを文字列または配列として追加する方法がわかりません。

// copy current data table

DataTable cloneTable = new DataTable();
cloneTable = dt.Copy();

ddlEventhistory.Items.Add(new Data { 
    Name = DateTime.Now.ToString(), 
    Value = cloneTable () 
}); 
ddlEventhistory.DisplayMember = "Name";
ddlEventhistory.ValueMember = "Value";

更新1:これが私のカスタムクラスです:

 private class Data 
 { 
     public string Name { get; set; } 
     public Object Value { get; set; } 
 }

更新2:ドロップダウンリストが変更された場合は次のようになります。

private void ddlEventhistory_SelectionChangeCommitted(object sender, EventArgs e)
{
    dgEvent.DataSource = (ddlEventhistory.SelectedValue as Data).Value as DataTable;                 
}

アップデート3:これが最終的なコードです

private class Data 
 { 
     public string Name { get; set; } 
     public Object Value { get; set; } 
 }

//History

        //take existing data table and copy it's source
        DataTable eventhistory = new DataTable();
        eventhistory = (DataTable)dgEvent.DataSource;

        ddlEventhistory.Items.Add(new Data { Name = DateTime.Now.ToString(), Value = eventhistory });
        ddlEventhistory.DisplayMember = "Name";
        ddlEventhistory.ValueMember = "Value";

//when drop down list selection is changed do....

private void ddlEventhistory_SelectionChangeCommitted(object sender, EventArgs e)
    {
        // Assign DataTable of selected ComboBox item to DataGrid.
       dgEvent.DataSource = (ddlEventhistory.SelectedItem as Data).Value as DataTable;
    }
4

1 に答える 1

0

このように、データのコピーをコンボボックス項目に追加できます。

//copy current data table
DataTable cloneTable = dt.Copy();

ddlEventhistory.Items.Add(new Data { Name = DateTime.Now.ToString(), Value = cloneTable }); 
ddlEventhistory.DisplayMember = "Name";
ddlEventhistory.ValueMember = "Value";

そして、ユーザーがこれらの項目の 1 つを選択すると、このように DataGrid に表示できます。

private void ddlEventhistory_SelectionChangeCommitted(object sender, EventArgs e)
{
    // Assign DataTable of selected ComboBox item to DataGrid.
    dgEvent.DataSource = (ddlEventhistory.SelectedItem as Data).Value as DataTable;
}
于 2013-03-21T15:38:58.050 に答える