2012-05-22 5 views
0

데이터 그리드를 가져와 한 가지를 제외하고 원하는에 웨어레이트를 할 수있었습니다. onRowClick 이벤트를 뭔가를 할 수있는 일반 자바 스크립트 함수에 바인딩하려고합니다. 연결 (오브젝트, 이벤트, 메소드)이 작동하지 않도록 Dojo 1.7.2를 사용 중입니다. 나는 새로운 (object, event ...) on을 사용하지 않으려 고 노력했다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?바인딩 onRow DoJo DataGrid (dojox.grid.DataGrid)에 연결

태그 사이에 있지만 changeValue() [함수를 작성하고 작동하는 것으로 알았습니다]와 dojo.require ... 사이에 있습니다. 즉, 블록의 마지막 항목입니다. 나는 on 메소드의 문법에 문제가 있음을 알고 있지만 무엇을 알아 내지 못하는지 알고 있습니다.

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

답변

2

코드 수정. 난 당신이 바인딩 할 것 함수가 실제 changeValue 아니라 그것을 반환 할 수 있습니다 무엇을 믿고,이

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

CSTE 연구진은 그렇게 .connect으로 시도 * 접두사에 * 뭔가에 약간의 마법을 만드는 시도 대신. 모범 사례는 객체 자체를 통해 리스너를 등록하는 것이므로 그리드가 파괴되면 연결이 끊어집니다. 위의 코드는 그리드 참조를 첫 번째 매개 변수로 전달해서는 안되기 때문에 그리드 객체의 확장으로 호출합니다.

0

@ mschr의 답변과 비슷하게 여기에 클릭 한 행과 관련된 데이터를 가져 오는 방법도 있습니다.

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

+0

의 일부 '에'를 제거해야

.connect ("onRowClick", changeValue)', changeValue 함수에서 this.selection ..을 사용하십시오. – mschr

0

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

및 예를 들어 귀하의에서 Datagrid에 jsid ="mygrid" 속성을 지정합니다. jsid을 dojo에 연결하면 연결할 필요가 없습니다. dijit.byId().

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

이것은 on 방법 올바른 구문은 당신이`dijit.byId ('그리드')와 이벤트의 이름 문자열

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