没有为 dojo 的 DataGrid 触发事件

Posted

技术标签:

【中文标题】没有为 dojo 的 DataGrid 触发事件【英文标题】:Event not firing for dojo's DataGrid 【发布时间】:2012-09-27 08:21:23 【问题描述】:

我有一个连接到某个商店的 DataGrid。我希望它在更改后立即保存。

只有一个可编辑的列具有 3 选项下拉设置为始终编辑,定义如下:

                <table data-dojo-type="dojox.grid.EnhancedGrid" id="leaveGrid" data-dojo-id="leaveGrid"
                     selectable=false singleClickEdit="true">
                <thead>
                    <tr>
                        <th field="TITLE" >Title</th>
                        <th field="REQUESTEDON" >Requested</th>
                        <th field="CODE" >Code</th>
                        <th field="LEAVEDATE" >Leave Date</th>
                        <th field="HRS" >Hours</th>
                        <th field="STATUS"  editable="true" alwaysEditing="true" cellType="dojox.grid.cells.Select" options='<?php echo $this->statusOptions;?>'>Status</th>
                    </tr>
                </thead>
            </table>

下拉列表的选项由 php 填充,但这应该不是问题。

我做了以下连接:

dojo.connect(gridStore, 'onSet', saveStore);

哪个处理存储的保存。

现在的问题是我点击下拉菜单,更改选项,然后......什么也没有发生。除非我按回车键或单击屏幕上的其他位置(如果愿意,可以更改焦点或选择),否则不会触发任何事件;只有这样事件才会触发。

我应该使用其他事件吗?我可以做些什么来让这些数据在用户更改后立即保存而无需进一步交互?

【问题讨论】:

【参考方案1】:

您可以在这里做几件事:

1) 使用 onClick 代替 onSet

2) 使用需要 Enter 键或模糊的 onApplyCellEdit 事件。您可以向用户显示有关如何使用内联编辑的工具提示

3) 检查网格生成的 html 并将处理程序附加到选择下拉列表的 id/class/name

【讨论】:

以上是关于没有为 dojo 的 DataGrid 触发事件的主要内容,如果未能解决你的问题,请参考以下文章

编辑 Dojo 增强网格时的空间

是否可以通过代码触发特定于 dojo 的事件?

WPF 触屏事件后触发鼠标事件的问题及 DataGrid 误触问题

datagrid 加上resize 事件怎么自适应

通过事件处理程序启用 Dojo 按钮

dojo.dijit.Button 触发 onclick 事件两次