2012-02-15 44 views
0

我以編程方式製作甘特圖。我所做的是讓項目的任務將其綁定到gridview,然後以天爲單位獲取項目持續時間,循環它以在網格視圖上每天添加1個額外的列。我需要做的是獲取每個任務的持續時間,然後在網格中填充相應的單元格。如何以編程方式更改空的DataGridView Cell背部顏色?


項目時間 - 5天。
任務1持續時間 - 2天需要:fiil 2/5的dgv細胞。

這可能嗎?

編輯

//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,row?這些是列和行索引嗎?我將編輯我的問題給你,看看我如何添加列。 – RMSP 2012-02-15 00:25:37

+0

是的。你可以把它看作x,y座標,左上角的單元格是0,0。 – 2012-02-15 00:33:50

+0

謝謝!花了我一段時間來理解它,但它效果很好!我只是有一個問題,顏色不會立即顯示,除非我重新綁定網格。我如何解決這個問題? – RMSP 2012-02-15 01:14:37

相關問題