2011-01-22 14 views
1

나는 SlickGrid에서 특정 셀 값을 반환하는 것처럼 보일 수 없다. SO here.에 대한 예제가 있습니다.하지만이 방법도 작동하지 않았습니다. SlickGrid 튜토리얼 # 7을 사용하고 있습니다. 내가하려고하는 것은 해당 셀 값을 반환하는 셀에 클릭 이벤트를 추가하는 것입니다.SlickGrid에서 특정 셀 값을 반환하려면 어떻게해야합니까?

참고 : JSON 요청을 통해 데이터를로드하고 있으며 모든 데이터가 올바르게 작동합니다. 내 클릭 이벤트가 발생하지만 값은 정의되지 않습니다. 간략하게하기 위해 그리드 열과 옵션 코드를 생략 할 것입니다. 여기에 코드와 감사합니다. 이 모든 것이 위대한 그리드입니다.

var sortcol = "id"; 
    var sortdir = -1; 
    $(function() { 
     $.getJSON(baseURL() + 'programs', function (data) { 
      dataView = new Slick.Data.DataView(); 
      grid = new Slick.Grid($("#program-grid"), data, programColumns, programOptions); 

      grid.onSort = function (sortCol, sortAsc) { 
       sortdir = sortAsc ? 1 : -1; 
       sortcol = sortCol.field; 

       if (sortAsc == true) { 
        data.sort(compare); 
       } 
       else { 
        data.reverse(compare); 
       } 
       grid.render(); 
      }; 
      grid.onClick = function (e, row, cell) { 
       if (programColumns[cell].id == "id") { 
        var x = data[row][cell].field;//This is where I am stuck 
        window.location.href = "http://google.com/" + x; 
       } 
      } 

     }); 
    }); 

답변

4

거의 다 왔으므로 data [row] .fieldname을 사용해야합니다. "필드"라는 데이터 필드가 있습니까? 당신을 dataView를 사용하는 경우

+0

은 그뿐만 아니라 시도하고 난 아직 정의되지 않은 얻을. 재밌는 점은 파이어 버그로 디버깅 할 때 행과 열 인덱스 번호가 정확하다는 것입니다. 가치가 없습니다. – trevorc

+0

업데이트 문제가 무엇인지 알아 냈습니다. 내 JSON 객체 속성은 낙타의 경우 이름 (FirstName, LastName 등)을 사용하여 전달됩니다. SlickGrid에는 일반적으로 원하는 필드를 식별하는 데 사용되는 "id"필드가 있습니다. 내 예와 같이 "if (programColumns [cell] .id =="id ")"는 SlickGrid ID 필드로 SlickGrid로 레이블을 지정했지만 ID로 전선을 통해 전달되었습니다. 간단히 말해서 "data [row] .NameAndCaseOfFieldAsItAppearsOverWire"가 정확합니다. 도와 줘서 고마워 Jason. +1 – trevorc

0

, 그것은 간단 다음 onCellChange 이벤트에

// Get the object containing row and cell index of a clicked row. 
var gridObject = roundGrid.getCellFromEvent(e); 

var row = gridObject.row; // get selected row index 
var row_values = roundDataView.getItem(row); // get the row object 

// Get the actual value. 
var cellValue = row_values[roundGrid.getColumns()[gridObject.cell].field]; 
0

바인딩

grid.onCellChange.subscribe(function(e, args) { 

    console.log(args.item[ grid.getColumns()[ args.cell ].field ]); 

}); 

반환

"{일부 값}"등 "새로 변경된 값입니다."

문서

는 onCellChange ({ row: number, cell: number, item: any })

Grid Events (onCellChange)

관련 문제