Infragistics UltraGrid - 禁用单个单元

时间:2016-08-23 09:16:39

标签: vb.net infragistics ultragrid

我有一个订单系统,在订单屏幕上,可以输入订单。为此,它使用UltraGrid,其中每一行都是一个Order。见下图。

enter image description here

我知道,不知何故,可以使整行无法覆盖,因此无法编辑单元格中的数据,也无法将数据输入空单元格。

但是,我需要所有单元格的行为都是这样的,除了一个,直到这个单元格中包含数据。 (例如,应禁用除“产品代码”之外的所有单元格,然后在填写产品代码后将其用于编辑)。我需要做什么代码?

我尝试使用With语句将单元格设置为ReadOnly,但这似乎不起作用。

修改

我已使用下面的代码禁用单个列激活,但我收到错误消息

  

对象引用未设置为对象的实例

有人可以告诉我为什么吗?

      If ugProducts.ActiveRow.Cells("Product_Code").Value <> "" Then
            ugProducts.DisplayLayout.Bands(0).Columns(1).CellActivation = Activation.Disabled
            ugProducts.DisplayLayout.Bands(0).Columns(2).CellActivation = Activation.Disabled
            ugProducts.DisplayLayout.Bands(0).Columns(3).CellActivation = Activation.Disabled
        Else
        End If

感谢。

1 个答案:

答案 0 :(得分:0)

方法是正确的:CellActivation是设置的正确道具。

但我认为问题是你设置的 WHEN ;)

你不谈论什么时候。 如果你想要那些单元格是一次,那么正确的&#34;时刻&#34; UGrid的 InitializeLayout event

InitializeLayoutEventArgs中你会找到.Layout,用它来设置band-column.CellActivation。

相反,如果您想控制特定行的特定单元格,则需要在InitializeRow event中处理此问题,并在eventarg中设置行中单元格的激活。

如果您需要在用户编辑单元格值时控制激活,请在AfterExitEditMode事件中处理它。

PS:个人建议,使用C#而不是VB。更加清晰,灵活和紧凑。

的Davide

相关问题