0

プログラムでガントチャートを作成しています。私がやっていることは、プロジェクトのタスクがそれをグリッドビューにバインドし、プロジェクトの期間を日数で取得し、それをループして、グリッドビューに1日あたり1列を追加することです。私がする必要があるのは、各タスクの期間を取得してから、グリッド内の対応するセルを埋めることです。

つまり、
プロジェクト期間-5日。
タスク1の期間-2日>必要:dgvセルの2/5をフィルします。

これは可能ですか?

編集

//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 });
}
4

1 に答える 1

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;
}
于 2012-02-15T00:23:04.927 に答える