2012-02-15 47 views
0

私はプログラムによってガントチャートを作成しています。私がやることは、プロジェクトのタスクがグリッドビューにバインドされた後、プロジェクトの期間を日単位で取得し、それをループしてグリッドビューに1日1列追加することです。私がする必要があるのは、各タスクの継続時間を取得し、グリッド内の対応するセルを埋めることです。空のDataGridViewセルのバックカラーをプログラムで変更する方法

つまり
プロジェクト期間 - 5日。
タスク1期間 - 2日間>必要:dgv細胞の2/5フィイル。

これは可能ですか?

EDIT

//GET PROJECT TASK 
string GetTasks = "SELECT TaskName FROM CreateTask WHERE ProjectID='" + ProjectID_Txt.Text + "'"; 
DataTable ProjTasks_DT = new DataTable(); 
SqlDataAdapter ProjTasks_Adapter; 

ProjTasks_Adapter = new SqlDataAdapter(GetTasks, connString); 
ProjTasks_DT.Clear(); 
ProjTasks_Adapter.Fill(ProjTasks_DT); 
connString.Close(); 

TaskTrackingGrd.DataSource = ProjTasks_DT; 

//PROJECT DURATION IN HOURS 
int DayDuration = ((Project_EndDate.Value - Project_StartDate.Value).Days) + 1; 

//ADDS THE COLUMNS 
for (int i = 0; i < DayDuration; i++) 
{ 
    var col3 = new DataGridViewTextBoxColumn(); 
    col3.HeaderText = "Day " + (i+1); 
    TaskTrackingGrd.Columns.AddRange(new DataGridViewColumn[] { col3 }); 
} 

答えて

1

はい:

int col, row; 
Color color; 
... 
dgv[col, row].Style.BackColor = color; 

としたタスクは、行1で、プロジェクトが2日目に開始し、3日間実行します:

{  
    ShowTask(1, 2, 3, Color.Red); 
} 

void ShowTask(int taskRow, int startDay, int duration, Color color) 
{ 
    for (int day = startDay - 1; day < startDay + duration - 1; day++) 
     dgv[day, taskRow].Style.BackColor = color; 
} 
+0

待ち、 colとは何ですか?これらは列と行のインデックスですか?あなたの質問を編集して、どのように列を追加するかを見ていきます。 – RMSP

+0

はい。左上のセルが0,0であるx、y座標と考えることができます。 –

+0

ありがとう!それを理解するために私をしばらくかかったが、それは素晴らしい作品!私はちょうど1つの問題がある、私はグリッドを再バインドしない限り、色がすぐに表示されません。どうすれば修正できますか? – RMSP

関連する問題