【问题标题】:Slickgrid sorting when using DataView and expand/collapse使用 DataView 和展开/折叠时的 Slickgrid 排序
【发布时间】:2014-07-11 07:57:19
【问题描述】:

我一直在进行大量的谷歌搜索,但找不到实现这一点的方法。抱歉,如果我在搜索中遗漏了它。

我使用Example 4 adding tree functionality 作为模板,但在树功能处于活动状态时我无法实现列排序。

由于 ID 不再按顺序排列,我尝试的所有内容都会在我的内联过滤器的渲染版本中陷入无限循环。

有没有人能够使用树功能实现排序或有任何指示如何实现它?有没有办法对父行进行排序并将父母和孩子放在一起?

我的过滤器与示例中的过滤器基本相同,只是对搜索进行了一些小调整。

如果由于父项和子项不再是连续的,则循环 item.parent 时会卡住。现在所有行都有孩子。

if (item.parent != null) {
            var parent = oppLineGridData[item.parent];

            while (parent) {
                if (parent._collapsed) {
                    return false;
                }

                parent = oppLineGridData[parent.parent];
            }
        }

全功能:

function openFilter(item) {

        if (specificColumn != null) {
            if (searchString != "" && item[specificColumn].toLowerCase().indexOf(searchString) == -1) {
                return false;
            }

        } else {
            if (searchString != ""
                && item["accountName"].toLowerCase().indexOf(searchString) == -1
                && item["solution"].toString().toLowerCase().indexOf(searchString) == -1
                && item["Adjusted_Commitment__c"].toLowerCase().indexOf(searchString) == -1
                && item["Deal_Registration_ID__c"].toLowerCase().indexOf(searchString) == -1
                && item["lineItemValue"].toString().toLowerCase().indexOf(searchString) == -1
                && item["oppotunityName"].toLowerCase().indexOf(searchString) == -1
                && item["closeDate"].toLowerCase().indexOf(searchString) == -1
                && item["productName"].toLowerCase().indexOf(searchString) == -1
                && item["stageName"].toLowerCase().indexOf(searchString) == -1
                && item["ownerName"].toLowerCase().indexOf(searchString) == -1
                && item["accountManagerList"].toLowerCase().indexOf(searchString) == -1
                && item["accountManagerMgr2"].toLowerCase().indexOf(searchString) == -1
                && item["ProServicesEngagement"].toLowerCase().indexOf(searchString) == -1
                && item["proServicesEngagementAll"].toLowerCase().indexOf(searchString) == -1
                && item["productType"].toLowerCase().indexOf(searchString) == -1
                && item["commissionableEMName"].toLowerCase().indexOf(searchString) == -1
                && item["lastUpdated"].toLowerCase().indexOf(searchString) == -1
                && item["updatedBy"].toLowerCase().indexOf(searchString) == -1) {
                return false;
            }
        }
        if (item.parent != null) {
            var parent = oppLineGridData[item.parent];

            while (parent) {
                if (parent._collapsed) {
                    return false;
                }

                parent = oppLineGridData[parent.parent];
            }
        }

        return true;
    }

【问题讨论】:

    标签: slickgrid


    【解决方案1】:

    唯一的答案是禁用过滤器的内联。换句话说,选项inlineFilters 应该设置为false。 我刚遇到同样的问题,我从经验中告诉你这一点。 SlickGrid 的过滤器内联不会处理复杂的代码。 即使是带有 if 内部或内部循环的 for 也足以让我进入无限循环。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 2018-12-13
      • 2013-06-06
      • 2014-11-25
      • 2015-06-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多