2013-03-19 3 views
0

У меня есть консольное приложение, к которому добавлена ​​форма.Как изменить цвет строки в представлении DataGrid

Эта форма имеет вид datagrid в нем со всеми свойствами, оставленными по умолчанию.

В Program.cs у меня есть этот код в главном методе:

CompanyActions objCompanyActions = new CompanyActions(); 

List<Company> analyzedData = new List<Company>(); 

List<Company> CompaniesFromExternalSource = objCompanyActions.GetExternalCompanyData(@"company.csv"); 

analyzedData = objCompanyActions.Compare(CompaniesFromExternalSource); 
AnalysisForm objAnalysisForm = new AnalysisForm(); 

objAnalysisForm.ShowAnalysisData(analyzedData); 
Application.Run(objAnalysisForm); 

В форме у меня есть этот код:

public void ShowAnalysisData(List<Company> analysisData) 
{ 
    analysisGridView.DataSource = analysisData; 

    UpdateGridStyle(); 

} 

и

private void UpdateGridStyle() 
    { 
     foreach (DataGridViewRow row in analysisGridView.Rows) 
     { 
      string RowType = row.Cells[0].Value.ToString(); 

      if (RowType == "Insert") 
      { 
       row.DefaultCellStyle.BackColor = Color.Green; 
       // row.DefaultCellStyle.ForeColor = Color.Black; 
      } 
      else if (RowType == "Update") 
      { 
       row.DefaultCellStyle.BackColor = Color.Yellow; 
       // row.DefaultCellStyle.ForeColor = Color.Black; 
      } 
      else 
      { 
       row.DefaultCellStyle.BackColor = Color.Gray; 
       // row.DefaultCellStyle.ForeColor = Color.Black; 
      } 
     } 

Это Безразлично» т работы. Сетка по-прежнему сохраняет белый фон по умолчанию для каждой строки? Что я здесь делаю неправильно?

С уважением.

ответ

0

Я думаю, вы вызываете метод для изменения цвета фона в неподходящее время. Попробуйте поместить его в CellFormatting следующим образом:

private void analysisGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) 
{ 
    DataGridViewRow row = analysisGridView.Rows[e.RowIndex]; 
    string RowType = row.Cells[0].Value.ToString(); 

    if (RowType == "Insert") 
    { 
     row.DefaultCellStyle.BackColor = Color.Green; 
     // row.DefaultCellStyle.ForeColor = Color.Black; 
    } 
    else if (RowType == "Update") 
    { 
     row.DefaultCellStyle.BackColor = Color.Yellow; 
     // row.DefaultCellStyle.ForeColor = Color.Black; 
    } 
     else 
    { 
     row.DefaultCellStyle.BackColor = Color.Gray; 
     // row.DefaultCellStyle.ForeColor = Color.Black; 
    } 
} 
+0

Да, это сработало, но есть заметная задержка при прокрутке сетки! Любые идеи, почему это происходит? – Codehelp

+0

Если вы прокрутите весь путь вниз, а затем выполните резервное копирование, сетка все еще отстает? –

+0

Кроме того, может быть, стоит просто сделать это с помощью jquery, поскольку вы просто смотрите на значение ячеек, а не на какое-то значение на стороне сервера. Это может оказаться более быстрым решением. –

Смежные вопросы