怎样响应propertygrid控件中集合编辑器的确定事件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样响应propertygrid控件中集合编辑器的确定事件相关的知识,希望对你有一定的参考价值。

参考技术A [Editor("System.Windows.Forms.Design.ListControlStringCollectionEditor, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))]本回答被提问者采纳

PropertyGrid 与 dgrid 类似

【中文标题】PropertyGrid 与 dgrid 类似【英文标题】:PropertyGrid alike with dgrid 【发布时间】:2016-07-05 11:16:52 【问题描述】:

我想使用 dgrid(和 dojo)创建一个类似的 PropertyGrid。据我所知,一列可能只包含一个编辑器类型。是否有任何解决方法可以为同一行中的不同单元格设置不同的编辑器控件?

Editor mixin 似乎为每行创建一个缓存的编辑器控件,但也许我错过了一些东西。

非常感谢!

【问题讨论】:

【参考方案1】:

没有可用于实现您所描述的功能的 mixin。但是,你可以做这两件事之一。

1) 您可以使用列中的 renderCell 函数代替编辑器,根据列值/行数据返回不同的输入/小部件。在这种情况下,您需要处理事件并更新商店。

2) 如果您仍想使用编辑器,有一个解决方法。通过使用 dojo/aspect。您需要听网格的 insertRow 方法。并使用单元格元素的适当小部件更新单元格。下面是相同的sn-p。

aspect.after(grid, "insertRow", lang.hitch(this, 'updateRowWidgets'));

function updateRowWidgets(rowElement)
    var cell = grid.cell(rowElement, <columnid>);
    var rowdata = cell.row.data;

    var rowWidget = .... //Create your widget according to row data.
    cell.element.widget = rowWidget;

    return rowElement; // remember to return this.

希望这对您有所帮助。

更新:第二个选项仅适用于 editOn,因为小部件将在 editOn 事件之后显示/添加到网格中,并且您可以在此之前切换小部件。否则,小部件将在 insertRow 完成之前添加到网格中。

【讨论】:

谢谢,第一个选项似乎最有希望,但由于我被卡住了,我尝试了第二个。在 updateRowWidgets 中,cell.element 是未定义的。知道出了什么问题吗? cell.element 不能未定义,因为它是单元格的节点。可能有 2 种可能性是未定义的。 1) 单元格尚未生成。 2)作为参数传递的columnid是错误的。

以上是关于怎样响应propertygrid控件中集合编辑器的确定事件的主要内容,如果未能解决你的问题,请参考以下文章

PropertyGrid 与 dgrid 类似

C#创建可视属性窗体,想实现类似VS编辑器一样的,在右边显示控件属性

PropertyGrid目前的几个需求技术上无法解决

3-PropertyGrid绑定自定义类

4-PropertyGrid绑定自定义弹窗

PropertyGrid自定义控件