2008-11-12 61 views
0

我们正在使用的Infragistics网格(最有可能,我们将有8.2版本的结尾),我们希望为了能够配置“按需”行/细胞出场提供某种“动态外观”。的Infragistics网格“点播”的出现

例如,我想要一些细胞是红色或绿色,这取决于它的价值。我们可能还想调整其他特征(字体,大小,图像等)。

做未免有些事件一个完美的地方,这种情况发生的细胞被重新粉刷之前...但它似乎存在的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