• MadhuGuda
  • NEWBIE
  • 0 Points
  • Member since 2011

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 1
    Questions
  • 2
    Replies
VF Page
----------


<apex:page Controller="gridTest" id="page">
<apex:form >

</apex:form>
<apex:includeScript value="{!$Resource.Extjs}/ext-3.0.0/adapter/ext/ext-base.js" />
    
    <apex:includeScript value="{!$Resource.Extjs}/ext-3.0.0/ext-all.js" />
    <apex:includeScript value="{!$Resource.RowEditor}" />
    <apex:stylesheet value="{!$Resource.Extjs}/ext-3.0.0/resources/css/ext-all.css" />
    <script>
      
 
Ext.onReady(function(){
    
    /*function changeStore(store) {
        if(typeof(store) != 'object') { return ''; }
        var dataArray = [];
        var encodedData = '';
        var data = store.data.items;
        Ext.each(data, function(item, index, array) {
            dataArray.push(item.data); 
        });
        return Ext.encode(dataArray);    
    }
    */
    
    var myData = {
        records : [
          
        ]
    };

    
    
    // Generic fields array to use in both store defs.
    var fields = [
        {name: 'name', mapping : 'name'},
        {name: 'user', mapping : 'user'},
        {name: 'effort', mapping : 'effort'},
        {name: 'desc', mapping : 'desc'},
        {name: 'priority', mapping : 'priority'}
    ];

    // create the data store
    var firstGridStore = new Ext.data.JsonStore({
        fields : fields,
        data   : myData,
        root   : 'records'
    });


    // Column Model shortcut array
    var cols = [
        { id : 'name', header: "Record Name", width: 150, sortable: true, dataIndex: 'name'},
        {header: "User", width: 100, sortable: true, dataIndex: 'user'},
        {header: "Effort", width: 100, sortable: true, dataIndex: 'effort'},
        {header: "Description", width: 100, sortable: true, dataIndex: 'desc'},
        {header: "Priority", width: 100, sortable: true, dataIndex: 'priority'}
    ];
    
    var secondData = {
        records : [
            <apex:repeat var="p" value="{!tempbph}">
                { name : "{!p.name}", user:"{!p.developer__r.name}",effort : "{!p.Effort_Estimate__c}", desc : "{!p.Requirement_Summary__c}", priority : "{!p.Priority__c}"},
            </apex:repeat>
                { name : "testreq", user:"charan",effort : "10", desc: "asdf", priority : "9"} 
        ]
    };
    //alert(secondData.records[0].name);
    // declare the source Grid
    var firstGrid = new Ext.grid.GridPanel({
        ddGroup          : 'secondGridDDGroup',
        store            : firstGridStore,
        columns          : cols,
        enableDragDrop   : true,
        stripeRows       : true,
        autoExpandColumn : 'name',
        title            : 'Requirements'
    });

    var secondGridStore = new Ext.data.JsonStore({
        fields : fields,
        data   : secondData,
        root   : 'records'
    });

    // create the destination Grid
    var secondGrid = new Ext.grid.GridPanel({
        ddGroup          : 'firstGridDDGroup',
        store            : secondGridStore,
        columns          : cols,
        enableDragDrop   : true,
        stripeRows       : true,
        autoExpandColumn : 'name',
        title            : 'Backlog'
    });


    //Simple 'border layout' panel to house both grids
    var displayPanel = new Ext.Panel({
        width        : 1100,
        height       : 300,
        layout       : 'hbox',
        renderTo     : 'panel',
        defaults     : { flex : 1 }, //auto stretch
        layoutConfig : { align : 'stretch' },
        items        : [
            firstGrid,
            secondGrid
        ],
        bbar    : [
            '->', // Fill
            {
                text    : 'Reset both grids',
                handler : function() {
                    //refresh source grid
                    firstGridStore.loadData(myData);

                    //purge destination grid
                    secondGridStore.removeAll();
                }
            },
            {
                text    : 'Save Changes',
                handler : function() {
                    //refresh source grid
                    
                    //var strings = changeStore(secondGridstore);
                    var jsonData = Ext.encode(Ext.pluck(secondGrid.store.data.items, 'data'));
                    
                    alert(jsonData);
                    sendUpdate(jsonData);
                    
                    firstGridStore.loadData(myData);

                    //purge destination grid
                    secondGridStore.removeAll();
                    
                    
                }
            }
        ]
    });

    // used to add records to the destination stores
    var blankRecord =  Ext.data.Record.create(fields);

        /****
        * Setup Drop Targets
        ***/
        // This will make sure we only drop to the  view scroller element
        var firstGridDropTargetEl =  firstGrid.getView().scroller.dom;
        var firstGridDropTarget = new Ext.dd.DropTarget(firstGridDropTargetEl, {
                ddGroup    : 'firstGridDDGroup',
                notifyDrop : function(ddSource, e, data){
                        var records =  ddSource.dragData.selections;
                        Ext.each(records, ddSource.grid.store.remove, ddSource.grid.store);
                        firstGrid.store.add(records);
                        firstGrid.store.sort('name', 'ASC');
                        return true;
                }
        });


        // This will make sure we only drop to the view scroller element
        var secondGridDropTargetEl = secondGrid.getView().scroller.dom;
        var secondGridDropTarget = new Ext.dd.DropTarget(secondGridDropTargetEl, {
                ddGroup    : 'secondGridDDGroup',
                notifyDrop : function(ddSource, e, data){
                        var records =  ddSource.dragData.selections;
                        Ext.each(records, ddSource.grid.store.remove, ddSource.grid.store);
                        secondGrid.store.add(records);
                        secondGrid.store.sort('name', 'ASC');
                        return true
                }
        });
        
        
        
        
        /************************************************Second displayPanel****************************************/
    var phaseData = {
        records : [
            <apex:repeat var="p" value="{!tempPh}">
                { name : "{!p.name}", start:"{!p.Start_Date__c}",end : "{!p.End_Date__c}", days : "{!p.Days_Remaining__c}", status : "{!p.Status__c}"},
            </apex:repeat>
                { name : "testreq", start:"Start",end : "end", days : "0", status : "0"}  
        ] 
    };
    
    var phasememData = {
        records : [
            
        ]
    };
    
    var cellClickEvent1 = function(grid,rowIndex,e){
            var rec = grid.getStore().getAt(rowIndex);
            var selectedPhase = rec.data.name;
            alert(selectedPhase);
            alert("{!lstReq}");
            sendPhase(selectedPhase);
            //alert("{!tempbph}");
            alert("{!lstReq}");
            <apex:repeat var="q" value="{!lstReq}">
                    
                    myData= {
                        name: "{!q.name}",
                        user: "{!q.developer__r.name}",
                        effort:"{!q.Effort_Estimate__c}",
                        priority:"{!q.Priority__c}",
                        desc:"{!q.Requirement_Summary__c}"
                    }  ;
            
                                   
                    var i= firstGridStore.getCount();
                    //alert(i);
                    var x = new firstGridStore.recordType(myData,i);
                    //alert(x);
                    firstGridStore.add(x);
            </apex:repeat>
                        
            /*var newDataRow = {name = "testreq", user="charan",Effort = "10", desc = "asdf", priority = "9"};
            var newRecord = new firstGridStore.recordType(newDataRow);
            firstGridStore.add(newRecord);*/
            
            //firstGrid.loadData(myData);
    }        
    
    // Generic fields array to use in both store defs.
    var fields = [
        {name: 'name', mapping : 'name'},
        {name: 'start', mapping : 'start'},
        {name: 'end', mapping : 'end'},
        {name: 'days', mapping : 'days'},
        {name: 'status', mapping : 'status'}
    ];

    // create the data store
    var phaseGridStore = new Ext.data.JsonStore({
        fields : fields,
        data   : phaseData,
        root   : 'records'
    });


    // Column Model shortcut array
    var cols = [
        { id : 'name', header: "Phase Name", width: 150, sortable: true, dataIndex: 'name'},
        {header: "Start Date", width: 100, sortable: true, dataIndex: 'start'},
        {header: "End Date", width: 100, sortable: true, dataIndex: 'end'},
        {header: "Days Remaining", width: 100, sortable: true, dataIndex: 'days'},
        {header: "Status", width: 100, sortable: true, dataIndex: 'status'}
    ];

    // declare the source Grid
    var phaseGrid = new Ext.grid.GridPanel({
        store            : phaseGridStore,
        columns          : cols,
        enableDragDrop   : true,
        stripeRows       : true,
        autoExpandColumn : 'name',
        title            : 'Phases',
        selModel         : new Ext.grid.RowSelectionModel({singleSelect : true}),
        listeners : {
        'rowclick' : cellClickEvent1 //add cell click event
        }
    });

    
    var phasememGridStore = new Ext.data.JsonStore({
        fields : fields,
        data   : phasememData,
        root   : 'records'
    });

    // create the destination Grid
    var phasememGrid = new Ext.grid.GridPanel({
        store            : phasememData,
        columns          : cols,
        enableDragDrop   : true,
        stripeRows       : true,
        autoExpandColumn : 'name',
        title            : 'Phase Members'
    });


    //Simple 'border layout' panel to house both grids
    var displayPanel = new Ext.Panel({
        width        : 1100,
        height       : 300,
        layout       : 'hbox',
        renderTo     : 'panel',
        defaults     : { flex : 1 }, //auto stretch
        layoutConfig : { align : 'stretch' },
        items        : [
            phaseGrid,
            phasememGrid
        ]
        
    });

   

});
    </script>
  <!-- Begin Default Content REMOVE THIS -->
  <apex:form >
        <apex:actionFunction name="sendPhase" action="{!phaseMem}" reRender="">
            <apex:param value="" name="selectedPhase" assignTo="{!selectedPhase}"/>
        </apex:actionFunction>      
        <apex:actionFunction name="sendUpdate" action="{!updateChanges}" reRender="resultTable">
            <apex:param value="" name="updates" assignTo="{!jString}"/>
        </apex:actionFunction>
        <apex:pageblock >
           <apex:pageblockSection >
                <apex:outputPanel layout="block">
                    <div id="panel"></div>
                </apex:outputPanel>
                <apex:outputpanel id="resultTable">
                    <apex:outputText >{!jString}</apex:outputText>
                    <!--<apex:pageblockTable value="{!updatedRequirements}" var="r">
                        <apex:column value="{!r.Effort_Estimate__c}"/>
                        <apex:column value="{!r.Requirement_Summary__c}"/>
                    </apex:pageblockTable>-->
                </apex:outputpanel>
           </apex:pageblockSection>
        </apex:pageblock> 
 
 </apex:form>
</apex:page>



@@@@@@@@@@@@@@@ Controller
---------------------------

public with sharing class gridTest {

    
    public string projectId=ApexPages.currentPage().getParameters().get('id');
    public preTech__Project__c proj;
    public list<requirements__c> lstReq{get;set;}
    public gridTest(){
        //selectedPhase = ApexPages.currentPage().getParameters().get('selectedPhase');
        proj=[Select name from preTech__Project__c where id=:projectId];
        lstReq=new list<requirements__c>();
    }
    
    
    public string selectedPhase{get; set;}
    public string jString {get;set;}
    
    //firstgrid
    /*public list<requirements__c> tempReq{get{
        this.selectedPhase = ApexPages.currentPage().getParameters().get('selectedPhase');
        System.debug('-----------############>selectedPhase : '+selectedPhase);
        tempReq = [select id, name, requirement_summary__c, effort_estimate__C, phase__r.name, developer__r.name,preTech__Priority__c from requirements__c where phase__r.name=:selectedPhase] ;
        System.debug('@@@@@@@@@@@@@@@@@@ $$$$$$$$$$$$ '+tempReq);
        return tempReq; 
    }set;}*/
    
    /*public list<requirements__c> getTMPReq(){
        this.selectedPhase = ApexPages.currentPage().getParameters().get('selectedPhase');
        System.debug('-----------############>selectedPhase : '+selectedPhase);
        list<requirements__c> tempReq = [select id, name, requirement_summary__c, effort_estimate__C, phase__r.name, developer__r.name,preTech__Priority__c from requirements__c where phase__r.name=:selectedPhase] ;
        System.debug('@@@@@@@@@@@@@@@@@@ $$$$$$$$$$$$ '+tempReq);
        return tempReq; 
    }*/
    
  /*  public list<requirements__c> getphasereq(){
    selectedPhase = ApexPages.currentPage().getParameters().get('selectedPhase');
        System.debug('---------------> $$$$$$$$$$$ ########### '+selectedPhase);
        List<Requirements__C> tempbReqs = [select id, name, requirement_summary__c, effort_estimate__C, phase__r.name, developer__r.name,preTech__Priority__c from requirements__c where phase__r.name=:selectedPhase] ;
        System.debug('------>'+tempbreqs);
        return tempbReqs ;
    }
    */
    
    public list<requirements__c> gettempbph(){
        string phase=proj.name+' - Backlog';
        System.debug('--------------->'+phase);
        List<Requirements__C> tempbReq = [select id, name, requirement_summary__c, effort_estimate__C, phase__r.name, developer__r.name,preTech__Priority__c from requirements__c where phase__r.name=:phase] ;
        return tempbReq;
    }
    
    // for fourthgrid
    public list<preTech__Team_Member__C> tempPhmem{get{
        tempPhmem = [Select Id,name,preTech__Phase__C,preTech__User__r.FirstName, preTech__User__r.LastName,preTech__Time_On_Project__c, preTech__Status__c,preTech__Position__c, preTech__Required_Competency__r.Name from preTech__Team_Member__C where preTech__phase__r.name=:selectedPhase] ;
        return tempPhmem;
    }set;}
    
    public list<Phase__c> tempPh{get{
        tempPh = [Select Id,preTech__project__c,name, preTech__start_date__C, preTech__end_date__C,preTech__days_remaining__C,preTech__status__C from preTech__Phase__C where preTech__project__C=:projectId];
        return tempPh;
    }set;}
    
    public void phasemem(){
       lstReq= [select id, name, requirement_summary__c, effort_estimate__C, phase__r.name, developer__r.name,preTech__Priority__c from requirements__c where phase__r.name=:selectedPhase];
       // getphasereq();
        System.debug('------------>@@@@@@@@@@@@@@@@@@ : '+selectedPhase);
        this.selectedPhase = ApexPages.currentPage().getParameters().get('selectedPhase');
    }
    public list<requirements__c> updatedRequirements {get;set;}    
    //public list<requirements__c> tempReq {get;set;}    
   
    
    public pageReference updateChanges(){
        string temp = '';
       //jString = jString.replaceAll('column1', 'effort_estimate');
       //jString = jString.replaceAll('column2', 'requirement_summary');
       updatedRequirements = new list<requirements__c>();
       
       list<root> te = parse(jString);
       
       for(Root t : te){
           updatedRequirements.add(new requirements__c(effort_estimate__c=decimal.valueof(t.effort_estimate), requirement_summary__c = t.requirement_summary));
       }
       
        return null;
    }
    
    public class Root {
        public String name;
        public String effort_estimate;
        public String requirement_summary;
    }
    
    
    public static List<Root> parse(String json) {
        return (List<Root>) System.JSON.deserialize(json, List<Root>.class);
    }
    
    static testMethod void testParse() {
        String json = '[{\"name\":\"R-000010\",\"effort_estimate__c\":\"8.0\",\"requirement_summary__c\":\"Dependency management.\"},{\"name\":\"R-000012\",\"effort_estimate__c\":\"30.0\",\"requirement_summary__c\":\"Project RAG statuss\"}]';
        List<Root> r = parse(json);
        System.assert(r != null);
    }
}

 Problem is

===========

phasemem()  of apex is executing and records is also fetching in ApexClass(checked in debug) but records are not displaying in VFPage.

alert("{!lstReq}"); // line no : 201

list is empty

 

But incase of alert("{!tempbph}"); i am getting result clearly

 

Please provide solution for this problem.

 

VF Page
----------


<apex:page Controller="gridTest" id="page">
<apex:form >

</apex:form>
<apex:includeScript value="{!$Resource.Extjs}/ext-3.0.0/adapter/ext/ext-base.js" />
    
    <apex:includeScript value="{!$Resource.Extjs}/ext-3.0.0/ext-all.js" />
    <apex:includeScript value="{!$Resource.RowEditor}" />
    <apex:stylesheet value="{!$Resource.Extjs}/ext-3.0.0/resources/css/ext-all.css" />
    <script>
      
 
Ext.onReady(function(){
    
    /*function changeStore(store) {
        if(typeof(store) != 'object') { return ''; }
        var dataArray = [];
        var encodedData = '';
        var data = store.data.items;
        Ext.each(data, function(item, index, array) {
            dataArray.push(item.data); 
        });
        return Ext.encode(dataArray);    
    }
    */
    
    var myData = {
        records : [
          
        ]
    };

    
    
    // Generic fields array to use in both store defs.
    var fields = [
        {name: 'name', mapping : 'name'},
        {name: 'user', mapping : 'user'},
        {name: 'effort', mapping : 'effort'},
        {name: 'desc', mapping : 'desc'},
        {name: 'priority', mapping : 'priority'}
    ];

    // create the data store
    var firstGridStore = new Ext.data.JsonStore({
        fields : fields,
        data   : myData,
        root   : 'records'
    });


    // Column Model shortcut array
    var cols = [
        { id : 'name', header: "Record Name", width: 150, sortable: true, dataIndex: 'name'},
        {header: "User", width: 100, sortable: true, dataIndex: 'user'},
        {header: "Effort", width: 100, sortable: true, dataIndex: 'effort'},
        {header: "Description", width: 100, sortable: true, dataIndex: 'desc'},
        {header: "Priority", width: 100, sortable: true, dataIndex: 'priority'}
    ];
    
    var secondData = {
        records : [
            <apex:repeat var="p" value="{!tempbph}">
                { name : "{!p.name}", user:"{!p.developer__r.name}",effort : "{!p.Effort_Estimate__c}", desc : "{!p.Requirement_Summary__c}", priority : "{!p.Priority__c}"},
            </apex:repeat>
                { name : "testreq", user:"charan",effort : "10", desc: "asdf", priority : "9"} 
        ]
    };
    //alert(secondData.records[0].name);
    // declare the source Grid
    var firstGrid = new Ext.grid.GridPanel({
        ddGroup          : 'secondGridDDGroup',
        store            : firstGridStore,
        columns          : cols,
        enableDragDrop   : true,
        stripeRows       : true,
        autoExpandColumn : 'name',
        title            : 'Requirements'
    });

    var secondGridStore = new Ext.data.JsonStore({
        fields : fields,
        data   : secondData,
        root   : 'records'
    });

    // create the destination Grid
    var secondGrid = new Ext.grid.GridPanel({
        ddGroup          : 'firstGridDDGroup',
        store            : secondGridStore,
        columns          : cols,
        enableDragDrop   : true,
        stripeRows       : true,
        autoExpandColumn : 'name',
        title            : 'Backlog'
    });


    //Simple 'border layout' panel to house both grids
    var displayPanel = new Ext.Panel({
        width        : 1100,
        height       : 300,
        layout       : 'hbox',
        renderTo     : 'panel',
        defaults     : { flex : 1 }, //auto stretch
        layoutConfig : { align : 'stretch' },
        items        : [
            firstGrid,
            secondGrid
        ],
        bbar    : [
            '->', // Fill
            {
                text    : 'Reset both grids',
                handler : function() {
                    //refresh source grid
                    firstGridStore.loadData(myData);

                    //purge destination grid
                    secondGridStore.removeAll();
                }
            },
            {
                text    : 'Save Changes',
                handler : function() {
                    //refresh source grid
                    
                    //var strings = changeStore(secondGridstore);
                    var jsonData = Ext.encode(Ext.pluck(secondGrid.store.data.items, 'data'));
                    
                    alert(jsonData);
                    sendUpdate(jsonData);
                    
                    firstGridStore.loadData(myData);

                    //purge destination grid
                    secondGridStore.removeAll();
                    
                    
                }
            }
        ]
    });

    // used to add records to the destination stores
    var blankRecord =  Ext.data.Record.create(fields);

        /****
        * Setup Drop Targets
        ***/
        // This will make sure we only drop to the  view scroller element
        var firstGridDropTargetEl =  firstGrid.getView().scroller.dom;
        var firstGridDropTarget = new Ext.dd.DropTarget(firstGridDropTargetEl, {
                ddGroup    : 'firstGridDDGroup',
                notifyDrop : function(ddSource, e, data){
                        var records =  ddSource.dragData.selections;
                        Ext.each(records, ddSource.grid.store.remove, ddSource.grid.store);
                        firstGrid.store.add(records);
                        firstGrid.store.sort('name', 'ASC');
                        return true;
                }
        });


        // This will make sure we only drop to the view scroller element
        var secondGridDropTargetEl = secondGrid.getView().scroller.dom;
        var secondGridDropTarget = new Ext.dd.DropTarget(secondGridDropTargetEl, {
                ddGroup    : 'secondGridDDGroup',
                notifyDrop : function(ddSource, e, data){
                        var records =  ddSource.dragData.selections;
                        Ext.each(records, ddSource.grid.store.remove, ddSource.grid.store);
                        secondGrid.store.add(records);
                        secondGrid.store.sort('name', 'ASC');
                        return true
                }
        });
        
        
        
        
        /************************************************Second displayPanel****************************************/
    var phaseData = {
        records : [
            <apex:repeat var="p" value="{!tempPh}">
                { name : "{!p.name}", start:"{!p.Start_Date__c}",end : "{!p.End_Date__c}", days : "{!p.Days_Remaining__c}", status : "{!p.Status__c}"},
            </apex:repeat>
                { name : "testreq", start:"Start",end : "end", days : "0", status : "0"}  
        ] 
    };
    
    var phasememData = {
        records : [
            
        ]
    };
    
    var cellClickEvent1 = function(grid,rowIndex,e){
            var rec = grid.getStore().getAt(rowIndex);
            var selectedPhase = rec.data.name;
            alert(selectedPhase);
            alert("{!lstReq}");
            sendPhase(selectedPhase);
            //alert("{!tempbph}");
            alert("{!lstReq}");
            <apex:repeat var="q" value="{!lstReq}">
                    
                    myData= {
                        name: "{!q.name}",
                        user: "{!q.developer__r.name}",
                        effort:"{!q.Effort_Estimate__c}",
                        priority:"{!q.Priority__c}",
                        desc:"{!q.Requirement_Summary__c}"
                    }  ;
            
                                   
                    var i= firstGridStore.getCount();
                    //alert(i);
                    var x = new firstGridStore.recordType(myData,i);
                    //alert(x);
                    firstGridStore.add(x);
            </apex:repeat>
                        
            /*var newDataRow = {name = "testreq", user="charan",Effort = "10", desc = "asdf", priority = "9"};
            var newRecord = new firstGridStore.recordType(newDataRow);
            firstGridStore.add(newRecord);*/
            
            //firstGrid.loadData(myData);
    }        
    
    // Generic fields array to use in both store defs.
    var fields = [
        {name: 'name', mapping : 'name'},
        {name: 'start', mapping : 'start'},
        {name: 'end', mapping : 'end'},
        {name: 'days', mapping : 'days'},
        {name: 'status', mapping : 'status'}
    ];

    // create the data store
    var phaseGridStore = new Ext.data.JsonStore({
        fields : fields,
        data   : phaseData,
        root   : 'records'
    });


    // Column Model shortcut array
    var cols = [
        { id : 'name', header: "Phase Name", width: 150, sortable: true, dataIndex: 'name'},
        {header: "Start Date", width: 100, sortable: true, dataIndex: 'start'},
        {header: "End Date", width: 100, sortable: true, dataIndex: 'end'},
        {header: "Days Remaining", width: 100, sortable: true, dataIndex: 'days'},
        {header: "Status", width: 100, sortable: true, dataIndex: 'status'}
    ];

    // declare the source Grid
    var phaseGrid = new Ext.grid.GridPanel({
        store            : phaseGridStore,
        columns          : cols,
        enableDragDrop   : true,
        stripeRows       : true,
        autoExpandColumn : 'name',
        title            : 'Phases',
        selModel         : new Ext.grid.RowSelectionModel({singleSelect : true}),
        listeners : {
        'rowclick' : cellClickEvent1 //add cell click event
        }
    });

    
    var phasememGridStore = new Ext.data.JsonStore({
        fields : fields,
        data   : phasememData,
        root   : 'records'
    });

    // create the destination Grid
    var phasememGrid = new Ext.grid.GridPanel({
        store            : phasememData,
        columns          : cols,
        enableDragDrop   : true,
        stripeRows       : true,
        autoExpandColumn : 'name',
        title            : 'Phase Members'
    });


    //Simple 'border layout' panel to house both grids
    var displayPanel = new Ext.Panel({
        width        : 1100,
        height       : 300,
        layout       : 'hbox',
        renderTo     : 'panel',
        defaults     : { flex : 1 }, //auto stretch
        layoutConfig : { align : 'stretch' },
        items        : [
            phaseGrid,
            phasememGrid
        ]
        
    });

   

});
    </script>
  <!-- Begin Default Content REMOVE THIS -->
  <apex:form >
        <apex:actionFunction name="sendPhase" action="{!phaseMem}" reRender="">
            <apex:param value="" name="selectedPhase" assignTo="{!selectedPhase}"/>
        </apex:actionFunction>      
        <apex:actionFunction name="sendUpdate" action="{!updateChanges}" reRender="resultTable">
            <apex:param value="" name="updates" assignTo="{!jString}"/>
        </apex:actionFunction>
        <apex:pageblock >
           <apex:pageblockSection >
                <apex:outputPanel layout="block">
                    <div id="panel"></div>
                </apex:outputPanel>
                <apex:outputpanel id="resultTable">
                    <apex:outputText >{!jString}</apex:outputText>
                    <!--<apex:pageblockTable value="{!updatedRequirements}" var="r">
                        <apex:column value="{!r.Effort_Estimate__c}"/>
                        <apex:column value="{!r.Requirement_Summary__c}"/>
                    </apex:pageblockTable>-->
                </apex:outputpanel>
           </apex:pageblockSection>
        </apex:pageblock> 
 
 </apex:form>
</apex:page>



@@@@@@@@@@@@@@@ Controller
---------------------------

public with sharing class gridTest {

    
    public string projectId=ApexPages.currentPage().getParameters().get('id');
    public preTech__Project__c proj;
    public list<requirements__c> lstReq{get;set;}
    public gridTest(){
        //selectedPhase = ApexPages.currentPage().getParameters().get('selectedPhase');
        proj=[Select name from preTech__Project__c where id=:projectId];
        lstReq=new list<requirements__c>();
    }
    
    
    public string selectedPhase{get; set;}
    public string jString {get;set;}
    
    //firstgrid
    /*public list<requirements__c> tempReq{get{
        this.selectedPhase = ApexPages.currentPage().getParameters().get('selectedPhase');
        System.debug('-----------############>selectedPhase : '+selectedPhase);
        tempReq = [select id, name, requirement_summary__c, effort_estimate__C, phase__r.name, developer__r.name,preTech__Priority__c from requirements__c where phase__r.name=:selectedPhase] ;
        System.debug('@@@@@@@@@@@@@@@@@@ $$$$$$$$$$$$ '+tempReq);
        return tempReq; 
    }set;}*/
    
    /*public list<requirements__c> getTMPReq(){
        this.selectedPhase = ApexPages.currentPage().getParameters().get('selectedPhase');
        System.debug('-----------############>selectedPhase : '+selectedPhase);
        list<requirements__c> tempReq = [select id, name, requirement_summary__c, effort_estimate__C, phase__r.name, developer__r.name,preTech__Priority__c from requirements__c where phase__r.name=:selectedPhase] ;
        System.debug('@@@@@@@@@@@@@@@@@@ $$$$$$$$$$$$ '+tempReq);
        return tempReq; 
    }*/
    
  /*  public list<requirements__c> getphasereq(){
    selectedPhase = ApexPages.currentPage().getParameters().get('selectedPhase');
        System.debug('---------------> $$$$$$$$$$$ ########### '+selectedPhase);
        List<Requirements__C> tempbReqs = [select id, name, requirement_summary__c, effort_estimate__C, phase__r.name, developer__r.name,preTech__Priority__c from requirements__c where phase__r.name=:selectedPhase] ;
        System.debug('------>'+tempbreqs);
        return tempbReqs ;
    }
    */
    
    public list<requirements__c> gettempbph(){
        string phase=proj.name+' - Backlog';
        System.debug('--------------->'+phase);
        List<Requirements__C> tempbReq = [select id, name, requirement_summary__c, effort_estimate__C, phase__r.name, developer__r.name,preTech__Priority__c from requirements__c where phase__r.name=:phase] ;
        return tempbReq;
    }
    
    // for fourthgrid
    public list<preTech__Team_Member__C> tempPhmem{get{
        tempPhmem = [Select Id,name,preTech__Phase__C,preTech__User__r.FirstName, preTech__User__r.LastName,preTech__Time_On_Project__c, preTech__Status__c,preTech__Position__c, preTech__Required_Competency__r.Name from preTech__Team_Member__C where preTech__phase__r.name=:selectedPhase] ;
        return tempPhmem;
    }set;}
    
    public list<Phase__c> tempPh{get{
        tempPh = [Select Id,preTech__project__c,name, preTech__start_date__C, preTech__end_date__C,preTech__days_remaining__C,preTech__status__C from preTech__Phase__C where preTech__project__C=:projectId];
        return tempPh;
    }set;}
    
    public void phasemem(){
       lstReq= [select id, name, requirement_summary__c, effort_estimate__C, phase__r.name, developer__r.name,preTech__Priority__c from requirements__c where phase__r.name=:selectedPhase];
       // getphasereq();
        System.debug('------------>@@@@@@@@@@@@@@@@@@ : '+selectedPhase);
        this.selectedPhase = ApexPages.currentPage().getParameters().get('selectedPhase');
    }
    public list<requirements__c> updatedRequirements {get;set;}    
    //public list<requirements__c> tempReq {get;set;}    
   
    
    public pageReference updateChanges(){
        string temp = '';
       //jString = jString.replaceAll('column1', 'effort_estimate');
       //jString = jString.replaceAll('column2', 'requirement_summary');
       updatedRequirements = new list<requirements__c>();
       
       list<root> te = parse(jString);
       
       for(Root t : te){
           updatedRequirements.add(new requirements__c(effort_estimate__c=decimal.valueof(t.effort_estimate), requirement_summary__c = t.requirement_summary));
       }
       
        return null;
    }
    
    public class Root {
        public String name;
        public String effort_estimate;
        public String requirement_summary;
    }
    
    
    public static List<Root> parse(String json) {
        return (List<Root>) System.JSON.deserialize(json, List<Root>.class);
    }
    
    static testMethod void testParse() {
        String json = '[{\"name\":\"R-000010\",\"effort_estimate__c\":\"8.0\",\"requirement_summary__c\":\"Dependency management.\"},{\"name\":\"R-000012\",\"effort_estimate__c\":\"30.0\",\"requirement_summary__c\":\"Project RAG statuss\"}]';
        List<Root> r = parse(json);
        System.assert(r != null);
    }
}

 Problem is

===========

phasemem()  of apex is executing and records is also fetching in ApexClass(checked in debug) but records are not displaying in VFPage.

alert("{!lstReq}"); // line no : 201

list is empty

 

But incase of alert("{!tempbph}"); i am getting result clearly

 

Please provide solution for this problem.

 

Hi i am trying to get some values from the send email wizard form within my visualforce page:

 

 

<apex:page >
    
    <script>
        function GetFrameWindow(event)
        {
        	alert(event); 
        	var iFrame = document.getElementById(event);
        	alert(iFrame);
        	var oDoc = iFrame.contentDocument;
        	alert(oDoc);
        }
    </script>
    
    <apex:form >
        <apex:commandButton value="Check" onclick="GetFrameWindow('theIframe');"/>
        <apex:inputTextarea richText="true" cols="2" rows="2"/>
        <center>
            <apex:iframe id="theIframe" src="/_ui/core/email/author/EmailAuthor?p3_lkid=000000011111111&retURL=%2F01111111111111&template_id=1111111111111111&isdtp=mn" scrolling="true" frameborder="true" width="800" height="600"/>      
        </center>
    </apex:form>
  
</apex:page>

 but everytime i try to get something from oDoc it is always null?