无法在dojo增强型网格中添加最后一列的复选框

时间:2013-04-05 13:43:35

标签: dojo dojox.grid

我正在创建dojo Grid,如下所示,我使用indirectSelection插件创建一个复选框,如下所示,但默认情况下,复选框将出现在网格的第一列。我怎样才能让它出现在最后一栏?

var grid = new dojox.grid.EnhancedGrid({
        id: 'serialsGrid',
        style: 'width:auto;height:250px;',
        store: store,
        structure: layout,
        rowSelector: '20px',
        plugins: {
            indirectSelection: {name:'Requested',headerSelector:true, width:"40px", styles:"text-align: center;"},
          pagination: {
              pageSizes: ["25", "50", "100", "All"],
              description: true,
              sizeSwitch: true,
              pageStepper: true,
              gotoButton: true,
                      /*page step to be displayed*/
              maxPageStep: 4,
                      /*position of the pagination bar*/
              position: "bottom"
          }
        }
    }, document.createElement('div'));

    /*append the new grid to the div*/
    //var temp=grid.domNode;
    dojo.byId("serialsGridDiv").appendChild(grid.domNode);
    /*Call startup() to render the grid*/
    serialsGridCopy=grid;
    grid.startup();
});

1 个答案:

答案 0 :(得分:1)

据我所知,插件本身没有这样做的能力所以我开始查看EnhancedGrid本身所具有的功能,偶然发现moveColumn()中的函数grid.layout。 文档本身(here)并不是很有用,但我用它将每一列向前移动一个位置,以便第一列成为最后一列。

我还制作了一个有效的JSFiddle来演示你可以看到here。移动列的代码可以在代码的底部找到:

for (var i = 1;i < grid.layout.cells.length;i++) {
    grid.layout.moveColumn(1, 1, i, i-1, grid.layout);
}

它的作用如下:它从索引1开始移动每一列,这意味着除了indirectSelection列之外的所有列都提前一步(i-1)。