Your Privacy Matters: We use our own and third-party cookies to improve your experience on our website. By continuing to use the website we understand that you accept their use. Cookie Policy
145
WebGrid data refresh problem
posted

Hi,

I am trying to refresh a dataGrid (<ig:gridView> tag) on change of  select box item. The problem is when I am trying to reload the data with fresh data, its not getting refreshed on the page (althought the data in the backing bean is refreshed). Can someone please highlight what should be the issue.

Note: If I am binding the grid with the "com.infragistics.faces.grid.component.GridView" then it gets refreshed. Is it necessary to bind the data with GridView?

I have attched below the snippet of the code:

Bean:
public class LimitModelBean {
private ArrayList<GridBean> limitDetails;
private ArrayList<SelectItem> limitModelIds;
private ArrayList<SelectItem> strategyIds;
private String selectedLimitModelId;
private String selectedStrategyId;
private List<MappedAction> mappedActList;
private SessionFacade sessionfacade;
private DataModel contextLimitModel;
private DataModel contextMappedActModel;

// method called to reload the data
public void limitModelIdChangeAction(ValueChangeEvent event) {

  FacesContext facesContext = FacesContext.getCurrentInstance();
  LimitModelBean limitModelBean = (LimitModelBean) facesContext.getExternalContext().getSessionMap().get("limitModelBean");
  
  ArrayList<SelectItem> strategyIds = new ArrayList<SelectItem>();
  ArrayList<GridBean> limitDetails = new ArrayList<GridBean>();
  ArrayList<MappedAction> mappesActions = new ArrayList<MappedAction>();
  contextLimitModel = new ListDataModel();
  contextMappedActModel = new ListDataModel();
  List<StrategyModelBO> strategies = sessionfacade
    .getStrategyModelForLimitModelAndCEID(16, Integer
      .parseInt((String) event.getNewValue()));
  Iterator<StrategyModelBO> itStrategy = strategies.iterator();
  while (itStrategy.hasNext()) {
   StrategyModelBO strategy = itStrategy.next();
   strategyIds.add(new SelectItem((new Integer(strategy
     .getDisplayStrategyID())).toString(), strategy
     .getDisplayStrategyID()
     + " - " + strategy.getStrategyName()));
  }
  List<OverallLimitDetailsBO> overallLimits = sessionfacade
    .getCFLimitsForLimitModelID(16, Integer.parseInt((String) event
      .getNewValue()));
  Iterator<OverallLimitDetailsBO> overIt = overallLimits.iterator();

  while (overIt.hasNext()) {
   OverallLimitDetailsBO overallLimitDetailsSDO = overIt.next();
   GridBean gridBean = LimitBeanHelper
     .convertOverallLimitSDoToGrid(overallLimitDetailsSDO);
   limitDetails.add(gridBean);
  }
  contextLimitModel.setWrappedData(limitDetails);
  List<MappedActionsBO> mappedActionsList = sessionfacade
    .getMappedActionsForLimitModelID(16, Integer
      .parseInt((String) event.getNewValue()));
  for (Iterator<MappedActionsBO> iterator = mappedActionsList.iterator(); iterator
    .hasNext();) {
   MappedActionsBO mappedActionsSDO = (MappedActionsBO) iterator
     .next();
   mappesActions.add(LimitBeanHelper
     .getMappedActionForMappedActionSDO(mappedActionsSDO));
  }
  
  contextMappedActModel.setWrappedData(mappesActions);
  
  limitModelBean.setContextLimitModel(contextLimitModel);
  limitModelBean.setContextMappedActModel(contextMappedActModel);
  limitModelBean.setMappedActList(mappesActions);
  limitModelBean.setStrategyIds(strategyIds);
  limitModelBean.setLimitDetails(limitDetails);
  limitDetailGrid.setDataSource(contextLimitModel);
  mappedActionGrid.setDataSource(contextMappedActModel);
  limitModelBean.setLimitDetailGrid(limitDetailGrid);
  limitModelBean.setMappedActionGrid(mappedActionGrid);
  FacesContext.getCurrentInstance().renderResponse();
  ArrayList<GridBean> a1 = (ArrayList)contextLimitModel.getWrappedData();
  for(int i=0; i<a1.size();i++){
   System.out.println("bbbbb   "+a1.get(i).getLimit());
 
  }
  Runtime.getRuntime().gc();

}


Facelet (xhtml):

 

<h:selectOneMenu id="menu1" styleClass="selectOneMenu"
 immediate="true" style="width:50" onchange="submit()"
 valueChangeListener="#{limitModelBean.limitModelIdChangeAction}">
 <f:selectItems value="#{limitModelBean.limitModelIds}" />
</h:selectOneMenu>


<h:outputText id="text2" styleClass="outputText" value="Strategy ID"
 style="width:50"></h:outputText>

<h:selectOneMenu id="menu2" styleClass="selectOneMenu"
 style="width:50">
 <f:selectItems value="#{limitModelBean.strategyIds}" />
</h:selectOneMenu>
</h:panelGrid>
<br />


<ig:tabView id="tabbedPanel1" styleClass="tabView">
<!-- Overall Limit Details are populated below -->
 <ig:tabItem value="Overall Limit Details" id="bfpanel1"
  selectedStyleClass="selectedStyle" styleClass="tabItem"
  hoverStyleClass="hoverStyle">

  <ig:gridView dataSource="#{limitModelBean.contextLimitModel}"
  id="tableEx1" styleClass="tabGrid" bottomPagerRendered="true"
  topPagerRendered="false" pageSize="5">

   <f:facet name="bottomPager">
    <ig:pager styleClass="pagerStyle"></ig:pager>
   </f:facet>
   <f:facet name="header">
    <h:outputText
    value="Limit Model Values and Reporting Ranges (R1 to R8)"
    id="text2" styleClass="outputText" />
   </f:facet>

   <ig:column>
    <f:facet name="header">
     <h:outputText value="Sequence" id="textSequence"
      styleClass="outputText" />
    </f:facet>
    <h:outputText id="textSequence1" value="#{DATA_ROW.sequence}"
     styleClass="outputText">
    </h:outputText>
   </ig:column>