如何在 Flex DataGrid 中结束/停止项目编辑

Posted

技术标签:

【中文标题】如何在 Flex DataGrid 中结束/停止项目编辑【英文标题】:How to end/stop item edit in Flex DataGrid 【发布时间】:2011-06-04 04:53:24 【问题描述】:

通常,您更新绑定到数据网格项的数据,如下所示:

    protected function onGridEditEnd(event:DataGridEvent):void
    
        if (grid.dataProvider != null && event != null)
        
            var editor:Object = event.currentTarget.itemEditorInstance;

            if (event.columnIndex == getColumnIndex(columnA) 
                    collection[event.rowIndex].name = TextInput(editor).text;
            
        
    

itemEditEnd 事件在用户完成编辑后立即调度。 所以,如果我想怎么办

    结束编辑(从 itemEditEnd 处理程序以外的其他方法或处理程序) 同时更新绑定数据项的值。

“当”用户正在编辑项目。

例如;如何从 keyDown 事件处理程序触发此事件?

注意:您可以调用onGridEditEnd(null),这将结束编辑但不更新数据。 onGridEditEnd(new DataGridEvent(DataGridEvent.ITEM_EDIT_END, ...)) 可以,但您还需要存储和传递 columnIndex、rowIndex、dataField 等值。这似乎不是最好和最简单的方法。

谢谢...

【问题讨论】:

我会推荐你​​的第二种方法;创建一个硬编码事件”并手动调度它。 Jeff 所说的,我会补充...如果您想要更好的控制,请完全摆脱项目编辑器,并使用具有适当状态的 ItemRenderers。它更容易控制,使用起来更自然。 似乎没有其他合适的方法..我不得不使用我的第二种方法..无论如何谢谢.. 【参考方案1】:

尝试将editable 属性设置为 false(然后您可以重新打开它)。 或者您可以尝试在其他地方设置焦点 (FocusManager.focus = null)。这样它仍然可以编辑,但用户必须再次单击它。

【讨论】:

以上是关于如何在 Flex DataGrid 中结束/停止项目编辑的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flex 中控制 Spark Datagrid 的滚动条位置?

如何使用mx Prints DataGrid打印flex spark datagrid?或者是否有其他方法可以在不使用mx Prints DataGrid的情况下实现此目的?

在 FLEX 中动态改变 Datagrid 列的宽度

flex中如何使DataGrid中的表头居中,下面的记录右对齐?

Flex DataGrid 标题列分隔符

Flex Datagrid - 如何获取鼠标 x/y 坐标的项目?