Dojo的onBeforeRow没有被调用

时间:2013-12-27 01:44:24

标签: dojo dojox.grid.datagrid dojox.grid

我正在尝试在Dojo Toolkit中做一个解决方法,在第一行中你不能通过添加一个只有宽度的虚拟行来执行colspan。创建行后,将使用onBeforeRow隐藏该行。

请参考以下内容作为参考。

  1. Dojo Bug Report

  2. Dojo-Grid-Header-Column-Grouping

  3. 这是我的代码:

    ConfirmGridGrid = new DataGrid({
        store: ConfirmGridDataStore,
        structure: [
            [
                 { width: '35px'} 
                ,{ width: '35px'} 
                ,{ width: '60px'} 
                ,{ width: '60px'} 
                ,{ width: '60px'} 
                ,{ width: '60px'} 
                ,{ width: '25px'} 
                ,{ width: '25px'} 
                ,{ width: '40px'} 
                ,{ width: '25px'} 
                ,{ width: '25px'} 
                ,{ width: '25px'} 
                ,{ width: '240px'} 
                ,{ width: '25px'} 
            ],[
                 { name: 'Product Code', field: 'ProductCD', width: '70px', colSpan: 2, editable: false} 
                ,{ name: 'Product Name', field: 'ProductNM', width: '240px', colSpan: 4, editable: false} 
                // The rest of second column..............................
            ],[
                // Third column..............................
            ]
        ],
        onBeforeRow: function(inDataIndex, inSubRows){
            inSubRows[0].invisible = true;
        }
    }, "ConfirmGrid");
    ConfirmGridGrid.startup();
    

    由于某种原因,未调用onBeforeRow事件。有什么需要添加的吗?或者您是否需要进行其他活动布线才能使其正常工作? 我顺便使用Dojo 1.9.1。

1 个答案:

答案 0 :(得分:1)

我最终发现了为什么没有被召唤。我把它放在了错误的地方。

我应该把它作为结构值的属性而不是网格定义。

希望以后能帮助别人。

structure: [
    [
         { width: '35px'} 
        ,{ width: '35px'} 
        ,{ width: '60px'} 
        ,{ width: '60px'} 
        ,{ width: '60px'} 
        ,{ width: '60px'} 
        ,{ width: '25px'} 
        ,{ width: '25px'} 
        ,{ width: '40px'} 
        ,{ width: '25px'} 
        ,{ width: '25px'} 
        ,{ width: '25px'} 
        ,{ width: '240px'} 
        ,{ width: '25px'} 
    ],[
         { name: 'Product Code', field: 'ProductCD', width: '70px', colSpan: 2, editable: false} 
        ,{ name: 'Product Name', field: 'ProductNM', width: '240px', colSpan: 4, editable: false} 
        // The rest of second column..............................
    ],[
        // Third column..............................
    ],
    ,onBeforeRow: function(inDataIndex, inSubRows){
        inSubRows[0].invisible = true;
    }
],

同样在我的情况下,将其设置为隐形是不够的。你需要改变css来删除填充和边框。

tr.dojoxGridInvisible th
{
    padding: 0px !important;
    border: 0px !important;
}

tr.dojoxGridInvisible td
{
    padding: 0px !important;
    border: 0px !important;
}

引导我得到答案的示例代码就是这个邮件列表。 here