Hello, I’m encountering an issue when trying to filter a TreeGrid using the filter editor and wanted to check if I might be doing something incorrectly.
I'm working with a TreeGrid that doesn't have a data source, but when I attempt to filter it, I receive an error. Is a data source required for filtering a TreeGrid? If so, is there an example or recommended approach for setting up a client-only data source for a tree structure? I've attempted this but am not having much luck adding nodes to the tree after the initial setData call. Calling treeGrid.addData(node) does not seem to respect the trees hierarchy and just appends nodes to the root.
Am I approaching this the wrong way? Any guidance would be appreciated. Thank you
SmartClient Version: v13.0p_2024-01-20/Enterprise Deployment (built 2024-01-20)
Chrome Version 133.0.6943.60
Stack Trace
Test Case
I'm working with a TreeGrid that doesn't have a data source, but when I attempt to filter it, I receive an error. Is a data source required for filtering a TreeGrid? If so, is there an example or recommended approach for setting up a client-only data source for a tree structure? I've attempted this but am not having much luck adding nodes to the tree after the initial setData call. Calling treeGrid.addData(node) does not seem to respect the trees hierarchy and just appends nodes to the root.
Am I approaching this the wrong way? Any guidance would be appreciated. Thank you
SmartClient Version: v13.0p_2024-01-20/Enterprise Deployment (built 2024-01-20)
Chrome Version 133.0.6943.60
Stack Trace
Code:
ISC_Core.js?ver=6.5.0.0-develop:323 Uncaught TypeError: Cannot read properties of null (reading 'getTreeRelationship')
at _3.isc_ResultTree_getTreeRelationship [as getTreeRelationship] (ISC_DataBinding.js?v….0-develop:2106:152)
at _3.isc_ResultTree_init [as init] (ISC_DataBinding.js?v…0.0-develop:2081:79)
at _3.isc_Class_completeCreation [as completeCreation] (ISC_Core.js?ver=6.5.0.0-develop:373:6)
at Object.isc_c_Class_create (ISC_Core.js?ver=6.5.0.0-develop:244:47)
at _3.isc_Canvas_createResultTree [as createResultTree] (ISC_DataBinding.js?v….0-develop:2391:190)
at _3.isc_TreeGrid_createDataModel [as createDataModel] (ISC_DataBinding.js?v….0-develop:2466:518)
at _3.isc_Canvas_filterWithCriteria [as filterWithCriteria] (ISC_Core.js?ver=6.5.0.0-develop:4889:216)
at _3.isc_c_Class_invokeSuper [as invokeSuper] (ISC_Core.js?ver=6.5.0.0-develop:308:93)
at _3.isc_c_Class_Super [as Super] (ISC_Core.js?ver=6.5.0.0-develop:300:170)
at _3.isc_ListGrid_filterWithCriteria [as filterWithCriteria] (ISC_DataBinding.js?v….0-develop:2464:241)
at _3.isc_c_Class_invokeSuper [as invokeSuper] (ISC_Core.js?ver=6.5.0.0-develop:308:93)
at _3.isc_c_Class_Super [as Super] (ISC_Core.js?ver=6.5.0.0-develop:300:170)
at _3.isc_TreeGrid_filterWithCriteria [as filterWithCriteria] (ISC_DataBinding.js?v…0.0-develop:2468:13)
at _3.isc_Canvas__filter [as $wo] (ISC_Core.js?ver=6.5.0.0-develop:4888:6)
at _3.isc_c_Class_invokeSuper [as invokeSuper] (ISC_Core.js?ver=6.5.0.0-develop:308:93)
at _3.isc_c_Class_Super [as Super] (ISC_Core.js?ver=6.5.0.0-develop:300:170)
at _3.isc_ListGrid__filter [as $wo] (ISC_Grids.js?ver=6.5.0.0-develop:2484:61)
at _3.isc_Canvas_filterData [as filterData] (ISC_Core.js?ver=6.5.0.0-develop:4836:789)
at _3.isc_ListGrid_handleFilterEditorSubmit [as handleFilterEditorSubmit] (ISC_Grids.js?ver=6.5….0-develop:2138:370)
at _3.isc_RecordEditor_performFilter [as performFilter] (ISC_Grids.js?ver=6.5….0-develop:3736:167)
at Object.isc_c_Class_fireCallback [as fireCallback] (ISC_Core.js?ver=6.5.0.0-develop:323:252)
at Object.isc_c_Class__fireActionsOnPause [as $cm] (ISC_Core.js?ver=6.5.0.0-develop:328:383)
at _3.isc_c_Class_fireCallback [as fireCallback] (ISC_Core.js?ver=6.5.0.0-develop:323:252)
at _3.isc_c_Timer__fireTimeout [as $in] (ISC_Core.js?ver=6.5.0.0-develop:2179:6)
at ISC_Core.js?ver=6.5.0.0-develop:2174:40
isc_ResultTree_getTreeRelationship @ ISC_DataBinding.js?v….5.0.0-develop:2106
isc_ResultTree_init @ ISC_DataBinding.js?v….5.0.0-develop:2081
isc_Class_completeCreation @ ISC_Core.js?ver=6.5.0.0-develop:373
isc_c_Class_create @ ISC_Core.js?ver=6.5.0.0-develop:244
isc_Canvas_createResultTree @ ISC_DataBinding.js?v….5.0.0-develop:2391
isc_TreeGrid_createDataModel @ ISC_DataBinding.js?v….5.0.0-develop:2466
isc_Canvas_filterWithCriteria @ ISC_Core.js?ver=6.5.0.0-develop:4889
isc_c_Class_invokeSuper @ ISC_Core.js?ver=6.5.0.0-develop:308
isc_c_Class_Super @ ISC_Core.js?ver=6.5.0.0-develop:300
isc_ListGrid_filterWithCriteria @ ISC_DataBinding.js?v….5.0.0-develop:2464
isc_c_Class_invokeSuper @ ISC_Core.js?ver=6.5.0.0-develop:308
isc_c_Class_Super @ ISC_Core.js?ver=6.5.0.0-develop:300
isc_TreeGrid_filterWithCriteria @ ISC_DataBinding.js?v….5.0.0-develop:2468
isc_Canvas__filter @ ISC_Core.js?ver=6.5.0.0-develop:4888
isc_c_Class_invokeSuper @ ISC_Core.js?ver=6.5.0.0-develop:308
isc_c_Class_Super @ ISC_Core.js?ver=6.5.0.0-develop:300
isc_ListGrid__filter @ ISC_Grids.js?ver=6.5.0.0-develop:2484
isc_Canvas_filterData @ ISC_Core.js?ver=6.5.0.0-develop:4836
isc_ListGrid_handleFilterEditorSubmit @ ISC_Grids.js?ver=6.5.0.0-develop:2138
isc_RecordEditor_performFilter @ ISC_Grids.js?ver=6.5.0.0-develop:3736
isc_c_Class_fireCallback @ ISC_Core.js?ver=6.5.0.0-develop:323
isc_c_Class__fireActionsOnPause @ ISC_Core.js?ver=6.5.0.0-develop:328
isc_c_Class_fireCallback @ ISC_Core.js?ver=6.5.0.0-develop:323
isc_c_Timer__fireTimeout @ ISC_Core.js?ver=6.5.0.0-develop:2179
(anonymous) @ ISC_Core.js?ver=6.5.0.0-develop:2174
setTimeout
isc_c_Timer_setTimeout @ ISC_Core.js?ver=6.5.0.0-develop:2174
isc_c_Class_delayCall @ ISC_Core.js?ver=6.5.0.0-develop:324
isc_c_Class__fireOnPause @ ISC_Core.js?ver=6.5.0.0-develop:328
isc_c_Class_fireOnPause @ ISC_Core.js?ver=6.5.0.0-develop:325
isc_Class_fireOnPause @ ISC_Core.js?ver=6.5.0.0-develop:404
isc_RecordEditor_performFilter @ ISC_Grids.js?ver=6.5.0.0-develop:3736
isc_RecordEditor_performAction @ ISC_Grids.js?ver=6.5.0.0-develop:3726
isc_RecordEditor_cellEditEnd @ ISC_Grids.js?ver=6.5.0.0-develop:3754
isc_ListGrid_editorKeyPress @ ISC_Grids.js?ver=6.5.0.0-develop:948
isc_c_Class_invokeSuper @ ISC_Core.js?ver=6.5.0.0-develop:308
isc_c_Class_Super @ ISC_Core.js?ver=6.5.0.0-develop:300
isc_RecordEditor_editorKeyPress @ ISC_Grids.js?ver=6.5.0.0-develop:3757
itemKeyPress @ ISC_Grids.js?ver=6.5.0.0-develop:888
isc_DynamicForm_handleItemKeyPress @ ISC_Forms.js?ver=6.5.0.0-develop:794
isc_FormItem__fireKeyPressHandlers @ ISC_Forms.js?ver=6.5.0.0-develop:1686
isc_FormItem_handleKeyPress @ ISC_Forms.js?ver=6.5.0.0-develop:1677
isc_c_Class_invokeSuper @ ISC_Core.js?ver=6.5.0.0-develop:308
isc_c_Class_Super @ ISC_Core.js?ver=6.5.0.0-develop:300
isc_TextItem_handleKeyPress @ ISC_Forms.js?ver=6.5.0.0-develop:2221
isc_c_EventHandler_bubbleEvent @ ISC_Core.js?ver=6.5.0.0-develop:2555
isc_c_EventHandler_handleKeyPress @ ISC_Core.js?ver=6.5.0.0-develop:2269
isc_c_EventHandler__handleNativeKeyPress @ ISC_Core.js?ver=6.5.0.0-develop:2265
isc_c_EventHandler_dispatch @ ISC_Core.js?ver=6.5.0.0-develop:2654
eval
Test Case
Code:
import com.smartgwt.client.types.TreeModelType;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.tree.Tree;
import com.smartgwt.client.widgets.tree.TreeGrid;
import com.smartgwt.client.widgets.tree.TreeGridField;
import com.smartgwt.client.widgets.tree.TreeNode;
import com.google.gwt.core.client.EntryPoint;
public class ParentLinkingTreeSample implements EntryPoint {
public static final TreeNode[] employeeData = new TreeNode[] {
new EmployeeTreeNode("4", "1", "Charles Madigen"),
new EmployeeTreeNode("189", "4", "Gene Porter"),
new EmployeeTreeNode("265", "189", "Olivier Doucet"),
new EmployeeTreeNode("264", "189", "Cheryl Pearson"),
new EmployeeTreeNode("188", "4", "Rogine Leger")
};
public void onModuleLoad() {
Tree employeeTree = new Tree();
employeeTree.setModelType(TreeModelType.PARENT);
employeeTree.setIdField("EmployeeId");
employeeTree.setParentIdField("ReportsTo");
employeeTree.setNameProperty("Name");
employeeTree.setRootValue(1);
employeeTree.setData(employeeData);
TreeGrid employeeTreeGrid = new TreeGrid();
employeeTreeGrid.setWidth(500);
employeeTreeGrid.setHeight(400);
employeeTreeGrid.setNodeIcon("icons/16/person.png");
employeeTreeGrid.setFolderIcon("icons/16/person.png");
employeeTreeGrid.setShowOpenIcons(false);
employeeTreeGrid.setShowDropIcons(false);
employeeTreeGrid.setClosedIconSuffix("");
// modified, add filter field and show filter editor
employeeTreeGrid.setFields(new TreeGridField("Name"), new TreeGridField("ReportsTo"));
employeeTreeGrid.setShowFilterEditor(true);
employeeTreeGrid.setData(employeeTree);
employeeTreeGrid.setShowSelectedIcons(true);
employeeTreeGrid.getData().openAll();
employeeTreeGrid.draw();
}
public static class EmployeeTreeNode extends TreeNode {
public EmployeeTreeNode(String employeeId, String reportsTo, String name) {
setAttribute("EmployeeId", employeeId);
setAttribute("ReportsTo", reportsTo);
setAttribute("Name", name);
}
}
}
Comment