0

페이지에 여러 개의 슬릭 그리드를 사용하는 데 문제가 있습니다. 그리드 수가 동적으로 변하기 때문에 자바 스크립트 함수로 그리드를 만들고 그리드 배열을 사용하여 아래처럼 유지합니다.페이지에서 여러 Slickgrids 이벤트를 관리하는 방법?

var columns = []; 
var options = []; 
for(var i=0; i<value; i++){ 
    options[i] = { 
    editable: true, 
    enableAddRow: true, 
    enableCellNavigation: true, 
    asyncEditorLoading: true, 
    autoEdit: false, 
    forceFitColumns: false, 
    //fullWidthRows: true, 
    syncColumnCellResize: true, 
    rerenderOnResize: true, 
    topPanelHeight: 30, 
    rowHeight: 22, 
    cellHighlightCssClass: "changed", 
    cellFlashingCssClass: "current-server"}; 
} 
for(var i=0; i<value; i++) { 
    columns[i].push({id: value, name: value, field: value}); 
    columns[i].push({id: value2, name: value2, field: value2}); 
    columns[i].push({id: value3, name: value3, field: value3}); 
} 
var arrayOfGrids = []; 

for(var i=0; i<value; i++) { 
    dataView = new Slick.Data.DataView(); 
    arrayOfGrids.push(new Slick.Grid('#' + i, dataView, columns[i], options[i])); 
    // .... 

하지만 내 문제는이 그리드의 이벤트를 관리하는 방법입니다. 이벤트는 필자가 우려하는 한 멀리까지 구현해야하기 때문입니다. 내 모든 그리드가 동일한 이벤트를 가져야하는 경우에도 어떤 그리드의 이벤트가 트리거되는지 판단 할 수있는 방법을 모르겠습니다.

제발 도와주세요! 많은 관심을 가져 주셔서 미리 감사드립니다.)

답변

0

클로저의 개념은 Javascript로 잘 알고 있습니까? 그렇지 않으면 당신은 그것을 google해야한다. /) 그리드

2를 초기화 당신을위한 루프

3에서이 함수를 호출

1) 만들 수있는 자신의 함수를 만들 : 여기

나는 그들이 문제를 해결할 수 있다고 생각하는 방법이다) initGrid 함수에서 이벤트에 등록하십시오. 이렇게하면 올바른 그리드에 대한 참조가 항상 있습니다. (내 코드의 initGrid 함수에있는 주석을 살펴보십시오.)

function initGrid(index) 
{ 
    var dataView = new Slick.Data.DataView(); 
    var grid = new Slick.Grid('#' + index, dataView, columns[index], options[index]); 
    arrayOfGrids.push(grid); 
    grid.onClick.subscribe(function (e) { 
    //grid variable will always be the clicked gird 
    //index variable will always be the correct one for this grid 
    //columns[index] will always be the columns for the clicked grid 
    //... 
    }); 
} 

for(var i=0; i<value; i++) { 
    initGrid(i); 
    // .... 
}