我一直在做大量的谷歌搜索,但无法找到实现这一目标的方法。对不起,如果我在搜索中错过了它。
我使用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;
}
答案 0 :(得分:1)
唯一的答案是禁用内联过滤器。换句话说,选项inlineFilters
应设置为false。
我只是遇到了同样的问题,我从经验中告诉你。 SlickGrid的过滤器内联不会处理复杂的代码。
即使是带有if内部或内部循环的for也足以让它进入我的无限循环。