【问题标题】:Binding onRowClick to a DoJo datagrid (dojox.grid.DataGrid)将 onRowClick 绑定到 DoJo 数据网格 (dojox.grid.DataGrid)
【发布时间】:2012-05-29 08:14:17
【问题描述】:

我已经能够让 DataGrid 做任何我想做的事情,除了一件事。我正在尝试将 onRowClick 事件绑定到将执行某些操作的常规 javascript 函数。我使用的是 Dojo 1.7.2,所以 connect(object,event,method) 不起作用。我尝试使用新的 on(object,event...) 无济于事。我做错了什么?

在标签之间但低于changeValue()[我编写并已知工作的函数] 和dojo.require... 换句话说,块中的最后一件事。我知道 on 方法的语法有问题,但不知道是什么。

var ngrid = dijit.byId('grid');
dojo.on(ngrid,"onRowClick",changeValue());

【问题讨论】:

    标签: javascript datagrid dojo


    【解决方案1】:

    这是on 方法的正确语法

    您必须删除事件名称字符串的“on”部分

    var ngrid = dijit.byId('grid');
    dojo.on(ngrid,"rowClick",changeValue());
    

    【讨论】:

      【解决方案2】:

      jsid ="mygrid" 属性分配给您的 Datagrid 。 在 dojo 连接中传递您的 jsid,您不必这样做 dijit.byId()

       dojo.connect(mygrid, "onRowClick", changeValue); 
      

      【讨论】:

        【解决方案3】:

        类似于@mschr 的回答,这里也是如何获取与点击的行关联的数据。

        dojo.connect(grid, "onRowClick", function(e) {
             var dataItem = grid.selection.getSelected();
             // call you change method here with dataItem
        });
        

        还有一个例子

        http://jsfiddle.net/cswing/T27hv/

        【讨论】:

        • dijit.byId('grid').connect("onRowClick", changeValue),在你的changeValue函数中使用'this.selection..'
        【解决方案4】:

        修复您的代码;因为我相信你想要绑定的函数是实际的 changeValue 而不是它可能返回的,试试这个

        dijit.byId('grid').connect("onRowClick", changeValue)
        

        .on 对前缀 *on*Something 产生了一些魔力,因此请尝试使用 .connect 代替。最佳实践是通过对象本身注册侦听器,以便在网格被破坏时断开连接。上面的调用作为网格对象的扩展,因此您不应将网格引用作为第一个参数传递。

        【讨论】:

          猜你喜欢
          • 2012-03-09
          • 1970-01-01
          • 2012-12-25
          • 2016-11-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-28
          • 2012-03-03
          相关资源
          最近更新 更多