【问题标题】:Infragistics UltraGrid - Make individual cells disabledInfragistics UltraGrid - 禁用单个单元格
【发布时间】:2016-08-23 09:16:38
【问题描述】:

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

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

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

我尝试使用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

谢谢。

【问题讨论】:

  • 您应该做的第一件事是将&lt;&gt; 更改为=,因为如果Product_Code 中的值不为空,则当前将它们设置为禁用。如果将.ToString 添加到.Value 的末尾会发生什么?
  • @David 谢谢,这仍然给出同样的错误,但至少现在分配是正确的

标签: vb.net infragistics ultrawingrid


【解决方案1】:

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

但我认为问题出在 WHEN 你设置了 ;)

你不谈论什么时候。 如果您希望单元格设置一次,则正确的“时刻”是 UGrid 的 InitializeLayout event

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

如果要控制特定行的特定单元格,则需要在InitializeRow event 中进行处理,并在 eventarg 中设置该行中单元格的激活。

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

PS:个人建议,用C#代替VB。更加清晰、灵活和紧凑。

大卫

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-23
  • 1970-01-01
相关资源
最近更新 更多