1. #41

  2. #42
    Ext JS Premium Member
    Join Date
    May 2010
    Posts
    145
    Vote Rating
    0
    pwelby is on a distinguished road

      0  

    Default


    Yes, I looked at that example. The example is a TreeGrid. I was asking about the ability for a ColumnTree to have resizing. If I was to use this, how would I switch it out with my ColumnTree to get the resizing functionality I need? I am a noob to EXT, so any help is appreciated.

  3. #43
    Sencha User
    Join Date
    Oct 2007
    Location
    Berlin, Germany
    Posts
    886
    Vote Rating
    8
    wm003 will become famous soon enough

      0  

    Default


    This IS still a columntree, really. There is a treeloader behind (not a store as in a real grid) because treegrid just like columntree are extensions of the treepanel and not gridpanel. It just looks a bit more like a grid because of the little bit different css (for example every row has a upper and lower border but this could be easily changed by tweaking the css. Just have a look at the source of the treegrid example stated above.

  4. #44
    Ext JS Premium Member
    Join Date
    May 2010
    Posts
    145
    Vote Rating
    0
    pwelby is on a distinguished road

      0  

    Default Help with serialization of JSON from ColumnTree

    Help with serialization of JSON from ColumnTree


    I am stuck. I have an editable column tree, revised from this thread: http://www.sencha.com/forum/showthre...n-Tree-example

    I am using a revised serialization routine that was created by an EXTJS developer, Evan Trembley. The routine does not seem to be 'serializing' any value I add in manually to the columns, but it does serialize any values I drag over and drop onto the ColumnTree. If I drag a node from the grid I have attached in this application, and drop it into the column tree it will be read by the serialization routine. If I however try to add a new node to the ColumnTree and add in values that I want to save to the database, the routine only reads certain fields.

    Here is the serialization routine:

    Code:
    Ext.override(Ext.tree.TreeNode, {
        toJson: function(allowedAttributes){
            var props = {}, children = [], key, attributes = this.attributes;
            
            // Add defaults options, parentNode
            //props.parentNode = this.parentNode ?  (this.parentNode.attributes.ID || null) : null; // consider changing ID  to EVID here        
            props.parentNode = this.parentNode ?  (this.parentNode.attributes.EVID || null) : null; // consider changing  ID to EVID here
            
            for (key in attributes) {
                if (allowedAttributes.indexOf(key) > -1) {
                    props[key] = attributes[key];
                }
            }
            Ext.each(this.childNodes, function(child){
                children.push(child.toJson(allowedAttributes));
            });
            
            props.children = children;
            return props;
        },
        
        serialize: function(allowedAttributes, excludeRoot){
            var o = this.toJson(allowedAttributes);
            if (excludeRoot) {
                o = o.children;
            }
            return Ext.encode(o);
        }
    });
    I am as I cannot get this routine to read the output from the column tree, if I add a new node to the ColumnTree manually. For example I have these columns - EVID, COL1, COL2, COL3, COL4, COMPLETED, CR, FR. i I enter a new node and edit the value showing in COL1, when I save - the serialization routine does not read the value under COL1, but pushes it to COL4, so that when it is stored in the database it is stored under COL4. If I drop a node from the grid, every column is read and stored and if I edit any column value the edits are also saved - but only for nodes dropped onto the ColumnTree.

    Here is a copy of my code for calling the serialization routine:

    Code:
    onSave: function(){
            
            function fn_MSG_Ext(message, title){
                Ext.Msg.show({
                    title: title,
                    msg: message,
                    buttons: Ext.MessageBox.OK,
                    icon: Ext.MessageBox.INFO
                });
            }
            
            if (top.doc_name == 'new_blank_doc') {
                var myURL =  'application/views/json_tree_save.php?document_id=' + this.docId +  '&name=' + this.docName  + '&spreadsheet_id=' + this.ssId;
            }
            else {
                var myURL = 'application/views/json_tree_save.php?document_id=' + this.docId + '&spreadsheet_id=' + this.ssId;
            }
            
            ////original serialize routine
            // var json = this.toJsonString(null, function(key, val){
               // return ['EVID', 'COL1', 'COL2', 'COL3', 'COL4', 'COMPLETE', 'COMBO', 'FR', 'CR'].indexOf(key) > -1;
            // }, {
                // COL1: 'COL1',
                // EVID: 'EVID',
                // COL2: 'COL2',
                // COL3: 'COL3',
                // COL4: 'COL4',
                // COMPLETE: 'COMPLETE',
                // COMBO: 'COMBO',
                // FR: 'FR',
                // CR: 'CR'
            // });
            
            
            // using local routine to serialize output from tree
            var json = this.getRootNode().serialize([ 'COL1', 'COL2',  'COL3', 'COL4', 'EVID', 'COMBO', 'COMPLETE', 'FR', 'CR' ], true);
            
            // view resultset in alert box
            alert(json);
            
            Ext.Ajax.request({
                
                url: myURL,
                method: 'POST',
                scope: this,
                params: {
                    document_id: this.docId,
                    data: json
                },
                success: function(result, request){
    
                    var resultMessage = 'Saved to database';
                    fn_MSG_Ext(resultMessage, 'Success');
                      
                },
                failure: function(result, request){
    
                    var resultMessage = result.responseText;
                    //var resultMessage = jsonData.data.result;
                    fn_MSG_Ext(resultMessage, 'Error');
                }
            });
        }
    If I click to add a new node to the ColumnTree, this is the code I call:

    Code:
    onAddFolder: function(){
            
            var selectedItem = this.getSelectionModel().getSelectedNodes()[0];
            if (!selectedItem) {
                selectedItem = this.getRootNode();
            }
            
            Ext.Msg.show({
                title   :   'Add requirement',
                buttons :   Ext.MessageBox.YESNO,
                msg     :   'Add Derived Requirement?',
                scope   :   this, 
                fn      :   function(btn){
                    if (btn === 'yes'){
                        
                        if (top._dbEVIDCount) {
                            this.getEVIDValue(selectedItem, top._dbEVIDCount+1);
                        }
                        else {
                            // call service to pull EVID from database
                            Ext.Ajax.request({
                                url     : 'application/views/get_EVID_svc.php',
                                method  : 'POST',
                                scope   : this,
                                success : function(response) {
                                    var res = Ext.util.JSON.decode(response.responseText);
                                    var currentEVIDCount, dbEVIDCount, oldEVIDCount;
                                    
                                    dbEVIDCount = res.evidCount;
                                    top._dbEVIDCount = dbEVIDCount;
                                    
                                    // open prompt to show new ID
                                    if (res.evidCount) {
                                        this.getEVIDValue(selectedItem, top._dbEVIDCount);
                                    }
                                    
                                    
                                }
                            });
                        }
                        
                    }
                }
            });
    
            
        },
        
        getEVIDValue: function(selectedItem, value) {
            
            Ext.Msg.show({
                title: 'Adding Requirement',
                value: value,
                buttons: Ext.MessageBox.OKCANCEL,
                prompt: true,
                scope: this,
                fn: this.doCreate.createDelegate(this, [selectedItem, false], 2)
            });
            
            return top._dbEVIDCount = top._dbEVIDCount+1;
        
        },
        doCreate: function(btn, evidVal, selectedItem, leaf){
        //console.log(arguments);
            if (btn == 'ok' && evidVal) {
                var newNode = new Ext.tree.TreeNode({
                    EVID: evidVal,
                    COL1: 'Add text',
                    COL2: 'Add text',
                    COL3: 'Add text',
                    COL4: 'Add text',
                    COMPLETE: 0,
                    COMBO: 0,
                    FR: 'N',
                    CR: 'N',
                    leaf: leaf,
                    expandable: !leaf,
                    uiProvider: Ext.tree.ColumnNodeUI
                });
                
                
                
                if (selectedItem.isLeaf()) {
                    selectedItem.parentNode.insertBefore(newNode, selectedItem.nextSibling);
                } else {
                    selectedItem.insertBefore(newNode, selectedItem.firstChild);
                }
                
                top.theNewCount = parseInt(evidVal) + 1;
            }
            
        }
    The new node shows up where it should in the ColumnTree, and I can edit all the values, but the only values being read by the serialization routine and stored are COL4, COMPLETED, CR and FR. It appears that this routine is not outputting everything as JSON. IF the serialization could read everything and spit out everything again, that would be great.

    I just want the 'onSave' routine to read any new values added into the ColumnTree, and actually to give me a read of ALL the values 'serialized' in the read, and spit out what is read so that I can store all of the changes to the database. I need it to read values dropped onto the ColumnTree as well as manual values added and edited.

    Any help appreciated!

film izle

hd film izle

film sitesi

takipci kazanma sitesi

takipci kazanma sitesi

güzel olan herşey

takipci alma sitesi

komik eğlenceli videolar