0

私は DataGrid に、1 つのことを除いて、私がやりたいことすべてを実行させることができました。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());
4

4 に答える 4

2

コードを修正します。あなたがバインドしたい関数は実際のchangeValueであり、それが返すものではないと私は信じているので、これを試してください

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

.on は接頭辞 * on *Something に魔法をかけるので、代わりに .connect を試してください。ベスト プラクティスは、グリッドが破棄されると切断されるように、オブジェクト自体を介してリスナーを登録することです。上記では、グリッド オブジェクトへの拡張機能として呼び出しを行っているため、グリッド参照を最初のパラメーターとして渡すべきではありません。

于 2012-05-22T19:44:23.223 に答える
1

これはonメソッドの正しい構文です

イベントの名前文字列の「on」部分を削除する必要があります

var ngrid = dijit.byId('grid');
dojo.on(ngrid,"rowClick",changeValue());
于 2013-01-31T14:22:15.037 に答える
0

@mschrの回答と同様に、クリックされた行に関連付けられたデータを取得する方法もここにあります。

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

と例

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

于 2012-05-22T19:58:54.470 に答える
0

jsid ="mygrid"属性を Datagrid に割り当てます。jsidあなたがしなくても道場コネクトであなたを渡しますdijit.byId()

 dojo.connect(mygrid, "onRowClick", changeValue); 
于 2012-05-23T06:50:41.197 に答える