Vb.net Infragistics UltraGrid-禁用单个单元格
我有一个订单系统,在订单屏幕上可以输入订单。为此,它使用一个Vb.net Infragistics UltraGrid-禁用单个单元格,vb.net,infragistics,ultrawingrid,Vb.net,Infragistics,Ultrawingrid,我有一个订单系统,在订单屏幕上可以输入订单。为此,它使用一个UltraGrid,其中每一行都是一个订单。见下图 我知道,在某种程度上,可以使整行不可重写,这样单元格中的数据就无法编辑,数据就不能输入空单元格 但是,我需要所有的单元格都像这样运行,除了一个,直到这个单元格中有数据为止。(例如,除“产品代码”外的所有单元格都应禁用,然后在填写产品代码后可供编辑)。我需要什么代码来执行此操作 我尝试使用With语句将单元格单独设置为只读,但这似乎不起作用 编辑 我使用了下面的代码来禁用单个列的激活,
UltraGrid
,其中每一行都是一个订单。见下图
我知道,在某种程度上,可以使整行不可重写,这样单元格中的数据就无法编辑,数据就不能输入空单元格
但是,我需要所有的单元格都像这样运行,除了一个,直到这个单元格中有数据为止。(例如,除“产品代码”外的所有单元格都应禁用,然后在填写产品代码后可供编辑)。我需要什么代码来执行此操作
我尝试使用With
语句将单元格单独设置为只读
,但这似乎不起作用
编辑
我使用了下面的代码来禁用单个列的激活,但是我收到了错误消息
对象引用未设置为对象的实例
有人能告诉我为什么吗
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
如果ugProducts.ActiveRow.Cells(“产品代码”).Value为“”,则
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
其他的
如果结束
谢谢。方法是正确的:CellActivation是正确的道具 但我认为问题在于当你设置 你不要谈论什么时候。 如果您想将单元格设置一次,请选择UGrid的初始化事件的正确“时刻” 在
初始值elayouteventargs
中,您将找到.Layout
,使用它设置band-column.cell激活
相反,如果要控制特定行的特定单元格,则需要在InitializeRow event
中处理此问题,并在eventarg中设置行中单元格的激活
如果用户编辑单元格值时需要控制激活,请在AfterExitEditMode事件中处理
私人建议,用C#代替VB。更加清晰、灵活、紧凑
Davide您应该做的第一件事是将
更改为=
,因为如果产品代码中的值不为空,则当前将其设置为禁用。如果将.ToString
添加到.Value
的末尾,会发生什么情况?@David谢谢,这仍然会产生相同的错误,但至少现在作业是正确的。这里已经回答了这一问题,但还是要感谢您