2015-09-28 7 views
8

मैंने पेड़पनेल को लागू करने में कामयाब रहा है और सबकुछ काम कर रहा है। मेरे पास डेटा है (नीचे देखें)। मेरे फ़ील्ड I "name" जो "ItemA", "ProductA" जैसी चीजों से नीचे रखता है जो नोड्स और "आयरन" है जो एक पत्ता है और "उपलब्ध" नामक एक संपत्ति है जो सत्य/झूठी है (बूलियन लेकिन स्ट्रिंग के रूप में दर्शाया जाता है) ।ExtJS: ट्रीपैनल में एक कॉलम को सॉर्ट करने से नोड्स के रिकॉर्ड का क्रम बदलता है न कि केवल

बूलियन के लिए सॉर्ट कॉलम पर क्लिक करते समय, मैं उन्हें टाइप करता हूं लेकिन पूरे प्रकार के रूप में। यानी मैं केवल प्रत्येक समूह में बुलियन को सॉर्ट करना चाहता हूं। वर्तमान में यह उन्हें लगता है कि वस्तुओं के समूह के रूप में उन्हें वर्गीकृत करता है। तो आइटमब के तहत नोड्स ऑर्डर न करें, न केवल बूलियन कॉलम का क्रम। मुझे लगता है कि इसका मतलब बनता है।

मैं स्तंभ मॉडल इस

 sortType: Ext.data.SortTypes.asUCString 

मैं भी treepanel में सच और झूठे के बीच "folderSort" की संपत्ति को बदलने की कोशिश की है करने के लिए सेट है, लेकिन यह कोई फर्क नहीं पड़ता।

कोई विचार?

बेहतर डेटा को आजमाने और कल्पना करने के लिए मेरे डेटा का एक उदाहरण है।

ItemA 
    ProductA 
     Iron  true 

ItemB 
    Product123 
     House  true 
     Garage  false 
     Misc  false 
    Product1443 
     HouseF  true 
     NewItem  false 

उत्तर

8

जैसा कि मैं आपके प्रश्न से समझता हूं, आप केवल नोड्स के बजाय पत्ते को सॉर्ट नहीं कर सकते हैं। तो, आप अपने पत्ता और नोड मॉडल निर्दिष्ट कर सकते हैं और फिर "उपलब्ध" संपत्ति को पत्तियों पर सेट कर सकते हैं। इस बेला की जांच करें: https://fiddle.sencha.com/#fiddle/upv

अगर ऐसा नहीं है कि आप क्या देख रहे हैं या यह आपके treepanel मॉडल बदलने के लिए संभव नहीं है, बेला बदल सकते हैं और अपने मॉडल के साथ अपने treepanel जोड़ें। आशा करता हूँ की ये काम करेगा।

Ext.define('model.ItemsRoot', { 
    extend: 'Ext.data.TreeModel', 
    childType: 'model.Items', 
    fields: [{ 
     name: 'text', 
     mapping: 'name' 
    },{ 
     name: 'Available', 
     type: 'boolean' 
    }] 
}); 
Ext.define('model.Items', { 
    extend: 'Ext.data.TreeModel', 
    childType: 'model.Products', 
    fields: [{ 
     name: 'text', 
     mapping: 'name' 
    }] 
}); 
Ext.define('model.Products', { 
    extend: 'Ext.data.TreeModel', 
    childType: 'model.ItemNames', 
    fields: [{ 
     name: 'text', 
     mapping: 'name' 
    }] 
}); 
Ext.define('model.ItemNames', { 
    extend: 'Ext.data.TreeModel', 
    fields: [{ 
     name: 'text', 
     mapping: 'name' 
    }] 
}); 
var treeStore = Ext.create('Ext.data.TreeStore', { 
    model: 'model.ItemsRoot', 
    root: { 
     text: '', 
     expanded: true, 
     children: [{ 
      name: "Item A", 
      expanded: true, 
      children: [{ 
       name: "Product A", 
       expanded: true, 
       children: [{ 
        name: "Iron", 
        leaf: true, 
        Available: true 
       }] 
      }] 
     }, { 
      name: "Item B", 
      expanded: true, 
      children: [{ 
       name: "Product B", 
       expanded: true, 
       children: [{ 
        name: "House", 
        Available: false, 
        leaf: true 
       }, { 
        name: "Garage", 
        leaf: true, 
        Available: true 
       }, { 
        name: "Misc", 
        leaf: true, 
        Available: false 
       }] 
      }, { 
       name: "Product C", 
       expanded: true, 
       children: [{ 
        name: "House F", 
        leaf: true, 
        Available: true 
       }, { 
        name: "New Item", 
        leaf: true, 
        Available: false 
       }] 
      }] 
     }] 
    } 
}); 
var treePanel = Ext.create('Ext.tree.Panel', { 
    store: treeStore, 
    rootVisible: false, 
    columns: [{ 
     xtype: 'treecolumn', //this is so we know which column will show the tree 
     text: 'Items', 
     flex: 2, 
     sortable: true, 
     dataIndex: 'name' 
    }, { 
     //xtype: 'checkcolumn', 
     header: 'Available', 
     dataIndex: 'Available', 
     //stopSelection: false, 
     //menuDisabled: true, 
     editor: { 
      xtype: 'checkbox',  
     } 
    }], 
    renderTo: Ext.getBody() 
}); 
+0

अच्छा, यह काम प्रतीत होता है। मैंने सोचा कि मेरे पास वही था, मेरे अंत में कुछ सही नहीं था। मैं इसे अभी जांचने जा रहा हूं। जल्द ही वापस आ जाएगा। – Martin

+0

निश्चित रूप से। अगर आपके पास कोई और सवाल है तो मुझे बताएं। –

+0

मुझे यह extjs 4 में त्रुटि मिली है, यह> = 5 के साथ काम करता है – Martin

संबंधित मुद्दे