dojo datagrid事件附加问题

时间:2016-05-12 08:54:58

标签: events datagrid dojo

我正在使用IBM Content Navigator 2.0.3,它使用DOJO 1.8进行GUI开发。我是dojo中的新手,我必须增强其中一种形式:向dataGrid添加一个事件处理程序,这样当选择网格行时,其中一个按钮就会启用。

HTML中描述的

dataGrid如下:

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

控制表单行为的JS文件只在_selectedDataGrid函数中提到了postCreate一次:

postCreate: function() {
    this.inherited(arguments);
    this.textDir = has("text-direction");
    this.hoverHelpList = [];
    domClass.add(this._selectedDataGridContainer, "hasSorting");
    this._renderSelectedGrid();

_renderSelectedGrid()正在执行,其中仅提及:

_renderSelectedGrid: function() {
    .......
    this._selectedDataGrid.appendChild(this._selectedGrid.domNode); 

我尝试在HTML中添加数据-dojo-attach-event onRowClick: enableRemoveUsersButton

enableRemoveUsersButton: function(evt){
    this.removeUsersButton.set('disabled', true);
},

在js文件中。没有帮助。

然后我尝试了:

dojo.connect(myGrid, "onRowclick", function update() {
    this.removeUsersButton.set('disabled', true); });

但我无法使用

获取myGrid个对象
`var myGrid  = dojo.byId("_selectedDataGrid");`

有人能告诉我如何获取网格对象和/或向此网格添加事件处理程序,当选择网格行时会触发该事件处理程序吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

您将无法通过grid获取dojo.byId("_selectedDataGrid")对象。最好使用myGridconnect对象保持在类级别(窗口小部件级别)和dojo.hitch

dojo.connect(this.myGrid, 'onRowClick', dojo.hitch(this, function(){
        //access myGrid using this.myGrid and do the handling
}));

答案 1 :(得分:0)

从你所拥有的内容中,我可以看到节点&#34; _selectedDataGrid&#34;只是一个Div标签。你的dataGrid小部件可能是&#34; this._selectedGrid&#34;所以你应该在该小部件上添加事件而不是容器节点。

还有dijit.byId来获取dijits / widgets的实例。和dojo.byId用于搜索dom节点。

希望这有用。