我正在使用IBM Content Navigator 2.0.3,它使用DOJO 1.8进行GUI开发。我是dojo中的新手,我必须增强其中一种形式:向dataGrid
添加一个事件处理程序,这样当选择网格行时,其中一个按钮就会启用。
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");`
有人能告诉我如何获取网格对象和/或向此网格添加事件处理程序,当选择网格行时会触发该事件处理程序吗?
谢谢!
答案 0 :(得分:0)
您将无法通过grid
获取dojo.byId("_selectedDataGrid")
对象。最好使用myGrid
将connect
对象保持在类级别(窗口小部件级别)和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节点。
希望这有用。