辞書のValuesコレクションにバインドしているDataGridViewがあります。フォームのコンストラクターで、ディクショナリを作成し、DataGridViewの列をディクショナリに含まれる構造のフィールドにバインドできます。
m_tasks = new Dictionary<int,OperationsTaskLabeledData>();
var taskArray = from task in m_tasks.Values select new {
StartDate = task.m_start_task_date.ToString("M/dd H:mm"),
EndDate = task.m_task_date.ToString("M/dd H:mm"),
Description = task.m_short_desc,
Object = task.m_device_id,
InitialLocation = task.m_initial_location,
FinalLocation = task.m_final_location };
dgvFutureTasks.DataSource = taskArray.ToArray();
このコードをフォームのコンストラクターに入れて、列をフォーマットできるようにします。グリッド内のデータが更新されるたびに列を再フォーマットする必要はありません。
このdatagridviewに表示するデータが実際にある場合、それをどのように処理しますか?この関数を呼び出します:
private void DisplayFutureTasks(IEnumerable<OperationsTaskLabeledData> tasks)
しかし、この関数内で何をすべきかわかりません。
datagridviewコントロールを再バインドし、コントロールが更新されるたびにすべての列を再フォーマットすることができますが、それは非常に無駄に思えます。私はそれを行うためのより良い方法があると確信しています、そして私は醜いブルートフォースを使用するのではなく、むしろ合理的な方法でこれを行うことを望みます。