我的应用程序有一个带有自定义项渲染器的树,它根据叶子上的数据类型使用不同的组件作为编辑器。在一种情况下,我正在尝试使用数据网格,以便用户可以选择满足他需要的行(需要显示几列),即。在概念上类似于 ComboBox。
为此,我将一个函数分配为“itemEditBegin”(用于树)的处理程序,在该处理程序中动态创建数据网格,然后使用弹出管理器将其显示为(模态)弹出窗口。到现在为止还挺好。
但是,如果您单击任何位置(例如,数据网格中的向下滚动按钮),弹出窗口就会消失,因为 itemEditEnd 事件被触发 - 为什么?!
在另一种情况下,我将 DateField 设置为编辑器,用户可以单击该图标以调出 DateChooser、滚动月份等。我查看了这背后的代码,它似乎使用了一个弹出窗口与我的代码完全相同!
这是“itemEditBegin”代码:
dataGrid = new DataGrid();
dataGrid.dataProvider = mddTable.dataCollection;
dataGrid.editable = false;
PopUpManager.addPopUp(dataGrid, this, true);
其中“this”是树渲染器用于一行的组件。只要单击数据网格内的任何内容(例如,行、向下滚动按钮、列分隔符等),就会调用树组件的“itemEditEnd”处理程序。
有什么想法吗?
谢谢,
麦克风。