2008-11-12 3 views
0

Мы используем сетку Infragistics (скорее всего, у нас будет версия 8.2 в конце), и мы хотим настроить появление строк/ячеек «по требованию», чтобы иметь возможность для обеспечения своего рода «динамического внешнего вида».Внешний вид сетки «по требованию»

Например, я хочу, чтобы какая-либо ячейка была красной или зеленой, в зависимости от ее значения. Возможно, мы захотим изменить другие характеристики (шрифт, размер, изображение и т. Д.).

Идеальное место, чтобы сделать это было бы какое-то событие, что произойдет до того, как клетка получает перекрасили ... Но, кажется, нет таких событий в Infragistics ...

Или я ошибаюсь? Любая помощь?

Разъяснение: Я говорю о WinForms Infragistics UltraGrid

+0

«похоже, что в Infragistics нет такого события» - кто-то не делал достаточно исследований. – Kon 2008-11-12 16:53:57

+1

Это вопрос, а не моя докторская диссертация. – 2008-11-12 17:35:13

ответ

0

Мы наконец с двумя решениями для этой проблемы.

Для некоторого динамического контента мы используем внешний вид элементов сетки и повторно инициализируем его по требованию.

Для чрезвычайно критического ресурса мы используем UltraGrid.DrawFilter (см. Также интерфейс IUIElementDrawFilter).

0

Существует событие. Я не помню точно, как это называется, но это должно быть что-то вроде «DataRowBound» или «ItemDataBinding» и т. Д.

Также может помочь this article.

Не то, чтобы это не имело никакого отношения к вашему вопросу, но я бы держался подальше от интенсивного использования элементов управления Infragistics - они очень тяжелые и значительно замедлят процесс рендеринга страниц. Только мои 0,02 доллара.

1

Я должен был сделать именно это с IG WebGrid несколько лет назад, и это было ... мы будем говорить ... больно. Тем не менее, WebGrid имел преимущество одиночной точки рендеринга - как только HTML был выпущен, мы были установлены!

Для решения этой проблемы в WinGrid я пробовал различные события, как на сетке, так и на источнике данных, и встретил сбой с ошибкой на каждом шагу. Единственным событием, которое я получил, было Paint, что, вероятно, создаст проблему с производительностью.

Для Paint, вот что я взломал вместе. Я не горжусь этим кодом, и я, вероятно, не будет ставить его в производство, но здесь это все равно (C#):

private void UltraGrid1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) 
{ 
    foreach (UltraGridRow r in UltraGrid1.Rows) 
    { 
     foreach (UltraGridCell c in r.Cells) 
     { 
      if (c.Text == "foo") 
       c.Appearance.BackColor = Color.Green; 
     } 
    } 
} 

и VB:

Private Sub UltraGrid1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles UltraGrid1.Paint 
    For Each r As UltraGridRow In UltraGrid1.Rows 
     For Each c As UltraGridCell In r.Cells 
      If c.Text = "foo" Then 
       c.Appearance.BackColor = Color.Green 
      End If 
     Next 
    Next 
End Sub 
Смежные вопросы