2013-04-23 3 views
1

나는 KnockOut 관측 가능한 배열을 사용하여 wijgrid를 채 웁니다. wijgrid에서 일부 셀의 값으로 JavaScript 객체를 사용하고 싶습니다. 불행히도 wijmo는 객체를 자체 모델로 문자열로 변환하는 것처럼 보입니다.wijgrid에 type 객체의 셀을 포함시킬 수 있습니까?

look at this example을 입력하십시오. 차량 소유자의 이름을 테이블에 표시하고 싶지만 id (및 모델 데이터 구조)도 유지해야합니다.

녹아웃 뷰 모델

var someData =[ { AssetCode: "Truck 5", 
       Owner: { 
       id: 1, 
       name: 'Pete'}, 
       VIN: "T3SN2ADN", 
       Odo:9, 
       TimeStamp: "2012-07-21T09:13:12Z"}, 
      { AssetCode: "Car 8", 
       Owner: { 
       id: 3, 
       name: 'Brian'}, 
       VIN: "COFAQ211", 
       Odo: 433299, 
       TimeStamp: "2012-07-17T15:34:54Z"}]; 

function ViewModel() { 
    var self = this; 
    self.gridData = ko.observableArray(someData); 
} 

ko.applyBindings(new ViewModel()); 

내가 해봤

<table id="t1" data-bind="wijgrid: { 
    data: gridData, 
    columns: [ 
    { headerText: 'Asset Code', dataKey: 'AssetCode', dataType: 'string'}, 
    { headerText: 'Owner name', dataKey: 'Owner'},   <!-- PROBLEM LINE --> 
    { headerText: 'VIN', dataKey: 'VIN', dataType: 'string' }, 
    { headerText: 'Odometer', dateKey: 'Odo', dataType: 'number' }, 
    { headerText: 'Time', dataKey: 'TimeStamp', dataType: 'datetime', dataFormatString: timePattern } 

]}"></table> 

wijgrid :

  • 표준 녹아웃 방식 : { headerText: 'Owner name', dataKey: 'Owner.name'}
  • 0 사용자 정의 cellFormatter을 만드는
  • : 나는이 디버깅 할 때 { headerText: 'Owner name', dataKey: 'Owner', cellFormatter: MY_FORMATTER}

나는 또한 ....

을 나는이 작업을 얻기 위해 생각할 수있는 거의 모든 노력을하지만, 여기 꽤 단단한 wijmo 보인다했습니다 Chrome에서는 wijmo가 형식을 지정하기 전에 자체 모델에서 객체를 String으로 변환 한 것처럼 보입니다. 이것은별로 유용하지 않습니다 ..

편집 - 우리는 Wijmo 2.3.9를 사용하고 있습니다. Wijmo 3에서 성능 문제가 발생했습니다. * 지금까지 업그레이드가 임박하지 않았습니다.

답변

0

자, cellFormatter을 사용하여 셀 값을 객체로 가져올 수 있습니다.이 작업을 수행하려면 을 지정하지 마십시오. dataKey 속성을 지정하십시오.

<table id="t1" data-bind="wijgrid: { 
    data: gridData, 
    columns: [ 
     { headerText: 'Asset Code', dataKey: 'AssetCode', dataType: 'string'}, 
     { headerText: 'Owner name', cellFormatter: MY_FORMATTER},   <!-- FIXED LINE --> 
     { headerText: 'VIN', dataKey: 'VIN', dataType: 'string' }, 
     { headerText: 'Odometer', dateKey: 'Odo', dataType: 'number' }, 
     { headerText: 'Time', dataKey: 'TimeStamp', dataType: 'datetime', dataFormatString: timePattern } 
]}"></table> 

그리고 다음 JS :

var MY_FORMATTER = function(args) { 
    if (args.row.data && args.row.dataRowIndex >= 0) { 
    args.formattedValue = args.row.data.Owner.name; 
    } 
}; 
0

당신은 어떤 셀에 사용자 정의 값을 설정 (또는 차량 소유자가 귀하의 경우 이름 표시)이 같은 cellStyleFormatter 처리하여 수 CellStyleFormatter에 대한 자세한 내용은

cellStyleFormatter: function (args) { 
//check for specific column and header row 
if (args.column.headerText == "Owner name" && args.row.dataRowIndex >= 0) { 
    //set the custom value to cell i.e. vehicle owner name 
    args.$cell.text(args.row.data.Owner.name); 
} 
} 

을, 당신은 참조 할 수 있습니다 : http://wijmo.com/wiki/index.php/Grid#cellStyleFormatter

+0

불행하게도,'cellStyleFormatter'가'cellFormatter'과 같은 문제를 앓고 다음은 수정 된 코드입니다. args.row.data.Owner의 값은 "[object Object]"입니다. 즉, Owner 객체가 아닌 String입니다. 이것은 나를 위해 작동하지 않습니다. : ( – Muel

+0

나는 대답에 대한 감사의 말을 잊어 버렸습니다. 그리고 다른 아이디어가 있다면, 나는 그것들을 시험해보고 싶어합니다! – Muel

관련 문제