【问题标题】:Cannot disable UltraGrid cells无法禁用 UltraGrid 单元格
【发布时间】:2016-08-23 13:24:25
【问题描述】:

我的项目中有一个 UltraGrid。可以将数据输入每个单元格,然后将其保存到数据库中。我希望能够禁用当前行中的所有单元格,除了一个名为Product_Code 的单元格。一旦数据被输入到活动行列(这是通过ValueList 输入的),我希望所有其他单元格都可以用于输入数据。

到目前为止我已经尝试过

If Me.ugProducts.ActiveRow.Cells("Product_Code").Value.ToString = "" Then
    Me.ugProducts.ActiveRow.Cells("Product_Volume").Activation = Activation.Disabled
Else
    Me.ugProducts.ActiveRow.Cells("Product_Volume").Activation = Activation.AllowEdit
End If

但没有成功。构建项目后,所有单元格都可以立即输入,尽管没有输入任何值。

为什么它不起作用?最好的方法是什么?

【问题讨论】:

  • DataSource 是否绑定到网格?如果是这种情况,它可能无法编辑。此外,您可以为 ex 做列,而不是做一个特定的单元格:Me.ugProducts.DisplayLayout.Bands(0).Columns(0).CellActivation = Activation.Disabled 这对我有用Me.ug.Rows(whatrow).Cells(whatcolumn).Activation = Activation.Disabled
  • @Zaggler 那么,如果是这样,我就没有办法让它们禁用吗?
  • 如果基础表不可编辑,则不会。原因是它绑定到网格并继承了架构。唯一的方法是确保DataTable 的列不是只读的...另一方面,默认情况下所有单元格除非更改,否则在运行时可编辑
  • @Zaggler 有什么替代方案吗?理想情况下,我需要先填写 Product_Code 列,因为其他列基于其中的数据
  • @Steve EditAndSelect 位在哪里,在 AfterRowUpdate 方法中?

标签: vb.net infragistics ultrawingrid


【解决方案1】:

我看到之前的评论已被删除,出于某种原因......但是,您可以尝试的一个解决方案是:

  • 在表单中加载;添加ugProducts.DisplayLayout.Override.CellClickAction = CellClickAction.CellSelect - 这意味着所有单元格都被禁用,但您仍然可以为Product_Code 选择ValueList
  • 现在,在ugProductsCellListSelect 事件中,使用以下代码ugProducts.DisplayLayout.Override.CellClickAction = CellClickAction.Edit(在任何验证检查或您已经在方法中拥有的任何内容之后,它会进入这里,只要继续尝试,如果你不太确定在哪里)

无论如何,现在应该可以让您根据需要填写它们了。

【讨论】:

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