如何在运行时更改未绑定的 Janus GridEx 行 (v3) 上的 Column.EditType 属性

How do I change the Column.EditType property on an unbound Janus GridEx Row (v3) at runtime

下午好,

我在某处遗漏了一些东西,我需要帮助。

我想做的是更改我在运行时添加的 GridEx 行的复选框列的 EditType。我现在的代码如下:

Private Sub FillGroupGrid(asset as AssetDetail)
    Dim row As GridEXRow = jgrdGroup.AddItem()

    row.BeginEdit()

    row.Cells(COL_NAME_GROUP_ID).Value = asset.GroupID
    row.Cells(COL_NAME_NAME).Value = asset.Name

    row.Cells(COL_NAME_SELECTED).Column.EditType = IIf(asset.InUse, EditType.NoEdit, EditType.CheckBox)
    row.IsChecked = asset.Selected

    row.EndEdit()
End Sub

行添加没有问题,但如果 asset.InUse 为真,复选框列的编辑类型不会从 EditType.CheckBox 更改为 EditType.NoEdit。当我在 GridEx 设计器中创建列时,我将 EditType 设置为 CheckBox,它就保留在那里。

如果有任何不同,我使用的是 Visual Studio 2013,GridEx 控件是 3.5.0.0

如果您能指出正确的方向,或一些文档/示例,我将不胜感激。 我试过 Google,但并没有给我带来任何快乐。

我认为您不能更改单个单元格的编辑类型,您必须更改列的编辑类型。在您的情况下,您可以将复选框编辑类型值设置为 True 或 False(选中或未选中)。同样对于列,您必须将其设置为 ActAsSelector = True

row.IsChecked = asset.Selected

以上代码将根据 asset.Selected 值使其选中或取消选中。如果要取消对未勾选单元格的编辑操作,那么有一个事件叫做grd_CurrentCellChanging(object sender, CurrentCellChangingEventArgs e)。我只给出一个C#的示例代码,你可以把它转换成VB.Net。

 private void grd_CurrentCellChanging(object sender, CurrentCellChangingEventArgs e)
    {
        if (e.Row != null)
            e.Cancel = !e.Row.IsChecked;
    }

希望对您有所帮助!