2012-11-18 6 views
9

저희 회사는 dojox/DataGrid에서 dgrid으로 얼마 전까지 옮겼습니다. 이제 우리는 알아 내기, dgrid dijit/dojox 위젯을 지원하지 않는 것 같습니다.dojo dgrid 내의 위젯

dojox/DataGrid에는 위젯을 반환 할 수있는 formatter()이 있습니다. 그래서 쉽게 거기에 그것을 할! API comparison on GitHub 말한다

"dgrid가 포맷 기능을 지원하지만, 그들도 반환 DOM 노드로 예상된다 renderCell을 가지고 .dgrid에서 위젯 반환을 지원하지 않습니다. 이것은 표면 상 을 표시하기 위해 사용될 수있다 위젯 (편집자 열 플러그인은 정확하게이 작업을 수행합니다.) 셀 편집 목적으로 을 사용하고 편집기 열 플러그인을 사용하면 이 권장됩니다. "

정확히 어떻게?

{editor: ' ', editorArgs:' '}으로 편집기 플러그인을 사용해 보았습니다. 이것은 위젯을 렌더링하지만 너무 제한적입니다. 예 : dijit/Button의 라벨을 셀의 값으로 렌더링하려면 어떻게해야합니까? 또는 좀 더 복잡한 것, src이 상점의 값인 형식 지정 함수에서 생성 된 <img>과 함께 (덜 알려진) dojox/image/MagnifierLite을 사용하려면 어떻게해야합니까?

답변

14

는이 샘플 코드

require(
    [ 
     "dgrid/List", 
     "dgrid/OnDemandGrid", 
     "dgrid/Selection", 
     "dgrid/editor", 
     "dgrid/Keyboard", 
     "dgrid/tree", 
     "dojo/_base/declare", 
     "dojo/store/JsonRest", 
     "dojo/store/Observable", 
     "dojo/store/Cache", 
     "dojo/store/Memory", 
     "dijit/form/Button", 
     "dojo/domReady!" 
    ], 

    function(
     List, 
     Grid, 
     Selection, 
     editor, 
     Keyboard, 
     tree, 
     declare, 
     JsonRest, 
     Observable, 
     Cache, 
     Memory, 
     Button 
    ) { 

     var columns = [ 
      { 
       label:"Actions", 
       field:"id", 
       width: "200px", 
       renderCell: actionRenderCell 
      } 
     ]; 

     var actionRenderCell = function (object, data, cell) { 

      var btnDelete = new Button({ 
       rowId : object.id, 
       label: "Delete", 
       onClick: function() { 
        myStore.remove(this.rowId); 
       } 
      }, cell.appendChild(document.createElement("div"))); 

      btnDelete._destroyOnRemove = true; 

      return btnDelete; 

     } 

     grid = new (declare([Grid, Selection, Keyboard]))({ 
      store: myStore, 
      getBeforePut: false, 
      columns: columns 
     }, "grid"); 

} 
+0

예를 사용할 수 있습니다! 그게 효과가있어! 감사! 귀하의 예제에서 dojox/DataGrid의 formatter와 같은 renderCell을 효과적으로 사용하고 있습니다. dgrid의 설명서에 따르면 formatter와 renderCell을 모두 적용하면 포맷터가 무시됩니다. 왜 그렇게 설계 되었습니까? –

+3

이 코드는 작동하지만 메모리 누수가 있음을 확신합니다. [이 사용을 피하려면 removeRow] (https://github.com/SitePen/dgrid/blob/v0.3.15/doc/usage/Working-with-Widgets.md#destroying-rendered-widgets) – sixtyfootersdude

관련 문제