그리드의 renderRow
이벤트 이후에 실행할 함수를 연결하려고합니다. 그래서 저는 DOJO의 aspect.after를 사용했습니다, 그러나 여기에 키커가 있습니다. 행이 실제로 렌더링되기 전에 실행되므로 divs \ tds가 아직 화면에 표시되지 않습니다. 그리고 아이템의 위치를 사용하고자하므로 dojo/domgeometry
을 사용하면 0으로 채워진 객체를 반환합니다. 행의 표시가 끝난 후 함수가 실행되도록 어떻게 보장 할 수 있습니까?dgrid 다음에 함수 실행 renderRow
JS 아래에서 JS를 찾을 수 있습니다.
aspect.after(grid, 'renderRow', function(row, args) {
var object = args[0];
if (object.type == 'tipo_exec') {
row.className += ' black';
} else if(object.type == 'exec') {
row.className += ' gray';
} else if(object.type == 'ic') {
if ((typeof(object.dep)!='undefined') && (object.dep.length > 0)) {
require(['dojo/dom-geometry','dojo/dom-construct'],
function(domGeom, domConstruct){
console.log(domGeom.position(row));
}
);
}
}
return row;
});
편집 : 또 한가지, 내가 나무 확장자를 사용하고, 부모에 대한 클릭이 확장 후 renderRow가 발생합니다.
편집 : 여기에 필요한 경우 더 많은 정보가 있습니다. 가게는 간단하지 :
store = new Observable(new Memory({'data': data,
'getChildren': function(parent, options){
return this.query({'parent': parent.id}, options);
},
'mayHaveChildren': function(parent){
return parent.hasChildren;
}
}));
그리고 그리드는 다음과 같이 선언한다 :
grid = new (declare([OnDemandGrid, Selection, Keyboard, CompoundColumns]))({
'columns': nCols,
'query': { 'parent': undefined },
'store': store
}, gridId);
이가 호출되는
if ((typeof(object.dep)!='undefined') && (object.dep.length > 0)) {
console.log('just before adding the refresh');
on.once(this, 'dgrid-refresh-complete', function(){
console.log('finished refreshing');
require(['dojo/dom-geometry','dojo/dom-construct'],
function(domGeom, domConstruct){
console.log(domGeom.position(node));
}
);
});
}
console.log('finished refreshing');
결코 후 측면의 내부가, 어느 쪽도 않습니다 위치 로그.
그리드에는 많은 열이 있고, 비교 열에 연결된 몇 개의 열, 트리 인 이름 열 및 기타가 있습니다. 트리를 확장 할 때 renderRow가 호출됩니다!
Image of the grid with a couple of data removed
은 매우 나쁜 생각을 @ahmed. –
나쁜 생각은 무엇입니까? –
이후 삭제 된 메모에 setTimeout이 제안되었습니다. –