Dojo EnhancedGrid 嵌套排序不起作用

Posted

技术标签:

【中文标题】Dojo EnhancedGrid 嵌套排序不起作用【英文标题】:Dojo EnhancedGrid nested sorting not working 【发布时间】:2011-04-14 18:28:58 【问题描述】:

我正在尝试在 Dojo 中创建具有嵌套排序功能的增强网格,但是当我通过插件添加嵌套排序功能时,网格不再在页面中工作(显示)。我的增强网格创建代码如下:

dojo.require("dojox.grid.EnhancedGrid");
dojo.require("dojox.grid.enhanced.plugins.NestedSorting");
grid = new dojox.grid.EnhancedGrid(
        canSort: function(colIndex) 
            //colIndex = -colIndex; //make columns decend 
            if ((colIndex == colA) || (colIndex == colB)) 
                return false;
            
            return true;
        ,
        onHeaderCellMouseOver:function(eventonGridHeaderCellMouseOver(event,layout[0]);,
        onHeaderCellMouseOut: function(event)onGridHeaderCellMouseOut(event,layout[0]);,
        store: msgStore,
        structure: layout,
        plugins: nestedSorting: true
    ,document.createElement("div"));
    dojo.byId("TableHolder").appendChild(grid.domNode);
    grid.startup();
    grid.setSortInfo(-1);

如果我注释掉插件行,那么它会在没有嵌套排序的情况下完美运行。有谁知道我将如何获得嵌套排序功能? 我正在使用 Dojo 1.4。 谢谢

【问题讨论】:

【参考方案1】:

应该是早期版本的缺陷,它在 1.5 中对我有用,也是 dojo forum 的相关线程

【讨论】:

【参考方案2】:

似乎我已经解决了这个问题....我发现必须包含“必需”的文件是:“dojox.grid.cells.dijit”。奇怪的是,我从文档中没有发现任何迹象表明这是必要的,但确实在示例中找到了它。一旦这被添加到我需要的语句中,我就有了嵌套排序。有人能解释一下这个特定的要求及其看似至关重要的重要性吗?

谢谢

【讨论】:

您可能希望添加您的 dojo.require 调查结果和“有人可以解释要求...”作为对您问题的编辑。它会给您的解决方案和后续问题更多的可见性。干杯。 (P.S. +1 澄清 Dojo 文档的任何内容。)【参考方案3】:

刚刚快速尝试了 1.4.3,似乎相同的代码对我有用:

dojo.addOnLoad(function()
    var grid = new dojox.grid.EnhancedGrid(
        id:'grid',
        canSort: function(colIndex) 
            if ((colIndex == 0) || (colIndex == 1)) 
                return false;
            
            return true;
         ,
         onHeaderCellMouseOver:function(event)onGridHeaderCellMouseOver(event,layout[0]);,
        onHeaderCellMouseOut: function(event)onGridHeaderCellMouseOut(event,layout[0]);,
        store: csvStore1,
        structure: layout,
        plugins : nestedSorting: true
    , document.createElement("div"));
    dojo.byId("gridDiv").appendChild(grid.domNode);
    grid.startup();
    grid.setSortInfo(-1);  );

它在您的 onHeaderCellMouseOver:function(event 中格式不正确,但不要认为这是原因,因为单排序适合您。

顺便说一句,在 1.4 中不支持通过 grid.setSortInfo(-1) 设置默认嵌套排序顺序(它在 1.6 的计划中)

【讨论】:

以上是关于Dojo EnhancedGrid 嵌套排序不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Dojo - EnhancedGrid 未在第一次页面加载时显示

如何将dojo EnhancedGrid的过滤器定义转移到服务器端

Dojo EnhancedGrid 和程序化选择

Dojo 增强网格嵌套排序无法排序

我的Android进阶之旅------>Android中ListView中嵌套(ListView)控件时item的点击事件不起作的问题解决方法

TabContainer 中的 EnhancedGrid 不起作用