0

我在 ActionScript 3/Flex 4 中使用 AdvancedDataGrid。网格有 5 列:调用者意图、标签、策略、确认模式和确认提示。除标签外,所有列都是可编辑的。但是,如果您将 Confirmation Mode 值更改为 NEVER,下一列 Confirmation Promptlet 将变为不可编辑并设置为值“n/a”(这是所需的功能)。

有问题的屏幕

不幸的是,图像不清晰。在第二行中,我将 Confirmation Mode 值更改为 NEVER。这就是当我开始跳出“确认模式”单元格时发生的情况:第一个选项卡:填充有“n/a”的确认提示。我没有看到任何焦点。第 2 个选项卡:视图堆栈左侧的第 5 个选项卡(深灰色)处于焦点位置。第三个标签:我没有看到任何焦点。第 4 个选项卡:带有绿色“+”(左上角)的按钮处于焦点位置。第 5 个选项卡:网格本身是焦点。第 6 个选项卡:最后我到达下一行的 Caller Intent 单元格(捕获此图像时)

我尝试为按钮设置 tabEnabled="false" 和 tabFocusEnabled="false"。我只为 AdvancedDataGrid 设置了 tabFocusEnabled="false"。但随后选项卡焦点开始移动到右上面板和右下面板中的组件。

我需要完成两件事: 1. 将制表符包含在网格中、右上面板和右下面板中。这意味着标签不应从一个区域跨越到另一个区域。2. 有一个不可编辑的字段,不要弄乱正常的标签行为。

4

2 回答 2

0

简单的解决方案:使用 ENTER 横向向下网格。

复杂的解决方案:使用事件侦听器的组合,并锁定/解锁其他列。

在 MXML 文件中,您可以编辑 DataGridColumn(或使用代码)来进行设置。

<mx:DataGridColumn ... id='col1' editable='false' ... />

虽然我知道你说这不起作用,但是当用户选择一列时,你可以锁定所有其他列并使它们不可编辑(通过代码 + DataGridColumn's with id)。结果,所有选项卡事件都“下降了一步”。但是,请确保在取消所有编辑时捕获退出的编辑事件。“解锁”所有其他列。作为概念证明,尝试创建一个只有 1 个可编辑列的表格

使用事件监听器拦截编辑开始和结束(因此忽略它/等)

//...
datagrid.addEventListner( DataGridEvent.ITEM_EDIT_END, editEvent );
function editEvent( e.DataGridEvent ):void {
    if(e.reason == DataGridEventReason.CANCELLED) {
        e.preventDefault();
    }

    if(e.dataField == 'collumn name i dun want to edit') {
        e.preventDefault();
    }
    //...
    //CODE TO LOCK / UNLOCK EDIT IN OTHER COLLUMNS
    //...
    //you may want to add an ignore, if both before / after values are the same
    //If you really need that code : i can dig it up (just let me know)
}

通过这种方式,您可以通过输入 ENTER 键横穿网格。(并在不需要时忽略编辑)。并捕获锁定其他网格所需的事件。

于 2011-06-11T13:30:17.510 回答
0

我围绕 AdvancedDataGrid 做了很多重点工作。在http://squaredi.blogspot.com/2011/04/taming-beast-advanceddatagrid.htmlhttp://squaredi.blogspot.com/2011/04/taming-beast-advanceddatagrid-code.html查看我的演示文稿

看看这些例子是否能让你更接近你的需求

于 2011-07-06T17:23:48.307 回答