按事件处理程序

时间:2016-05-12 16:24:18

标签: dojo

我正在使用IBM Content Navigator 2.0.3,它使用DOJO 1.8进行GUI开发。我是dojo中的新手,我必须增强其中一种形式:向dataGrid添加一个事件处理程序,以便在选择网格行时,其中一个按钮变为启用状态。 我已设法按照此问题中的建议添加事件处理程序:dojo datagrid event attach issue 但我仍然无法启用按钮。这是表单的html:

    加     去掉     
<div class="selectedGridContainer" data-dojo-attach-point="_selectedDataGridContainer">                     
<div class="selectedGrid" data-dojo-attach-point="_selectedDataGrid" ></div>
</div>

附加图片描述了它的外观enter image description hereenter image description here 而postCreate函数的js文件代码如下:

postCreate: function() {
        this.inherited(arguments);
        this.textDir = has("text-direction");

        domClass.add(this._selectedDataGridContainer, "hasSorting");
        this._renderSelectedGrid();

        this.own(aspect.after(this.addUsersButton, "onClick", lang.hitch(this, function() {
            var selectUserGroupDialog = new SelectUserGroupDialog({queryMode:"users", hasSorting:true, callback:lang.hitch(this, function (user) {
                this._onComplete(user);
                this._markDirty();
            })});
            selectUserGroupDialog.show(this.repository);
        })));

        this.own(aspect.after(this.removeUsersButton, "onClick", lang.hitch(this, function() {
            if (this._selectedGrid != null) {
                var selectedItems = this._selectedGrid.selection.getSelected();
                if (selectedItems.length > 0) {
                    array.forEach(selectedItems, lang.hitch(this, function(item) {
                        this._selectedGrid.store.deleteItem(item);
                    }));
                }
                this._selectedGrid.selection.clear();
                this._selectedGrid.update();
            }
            this._markDirty();
        })));

// the following handler was added by me
        dojo.connect(this.myGrid, 'onclick', dojo.hitch(this, function(){
            console.log(" before ");
        this.removeUsersButton.set('disabled', true);
            console.log(" after ");
        }));

    },

所以this.own(aspect.after(this.removeUsersButton .....在我的干扰之前正常工作。所以它以某种方式访问​​this.removeUsersButton并处理事件。但是我的处理程序dojo.connect(this.myGrid) ....只在不启用“删除”按钮之前和之后打印console.log()。按钮没有Id,只有data-dojo-attach-point。如何在选择daaGrid时启用“删除”按钮?

1 个答案:

答案 0 :(得分:1)

使用this.removeUsersButton.set(&#39;禁用&#39;,true);您正在设置要禁用的按钮。如果要启用它,则需要将其设置为false。

this.removeUsersButton.set('disabled', false);