Как программно изменить цвет задней части ячейки DataGridView? - PullRequest
0 голосов
/ 15 февраля 2012

Я делаю диаграмму Ганта программно. Что я делаю, так это получаю задачи проекта, связываю их с видом сетки, а затем получаю продолжительность проекта в днях, зацикливаюсь на ней, чтобы добавить 1 дополнительный столбец в день в виде сетки. Что мне нужно сделать, это получить продолжительность каждой задачи, а затем заполнить соответствующие ячейки в сетке.

т.е.
Продолжительность проекта - 5 дней.
длительность задания 1 - 2 дня> необходимо: 2/5 ячеек dgv.

Возможно ли это?

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 Ответ

1 голос
/ 15 февраля 2012

Да:

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;
}
...