2014-02-13 44 views
0

我正在gwt上工作,並且出現這種情況,當我單擊某個按鈕時,應該刪除面板中的exixting網格,並且應該添加新的網格。有人可以幫我解決這個問題。下面是我點擊刷新按鈕時執行的代碼。我正在編輯現有網格並更新數據庫中的一些細節。所以當我點擊這個刷新按鈕時,我再次進行一個新的rpc調用,並在更新網格後獲取新數據,我需要在現有網格中顯示新數據。從面板中刪除網格並在gwt中添加新網格

  RpcProxy< String> proxy_refresh = new RpcProxy< String>() { 
       protected void load(Object loadConfig, AsyncCallback<String> callback) { 
        if (itemService == null) { 
         itemService = GWT.create(ReleaseItemService.class); 
        } 
        itemService.search(criteria, callback); 
       } 
      }; 


      xml.setRoot("resultset"); 
      xml.setRecordName("record"); 
      xml.addField("release_id"); 
      xml.addField("project_name"); 
      xml.addField("type"); 
      xml.addField("business_unit"); 
      xml.addField("project_manager"); 
      xml.addField("developer"); 
      xml.addField("deployer"); 
      xml.addField("verifier"); 
      xml.addField("status"); 
      xml.addField("item_no"); 
      xml.addField("qa_developer"); 
      xml.addField("deployment_date"); 

      XmlReader reader_refresh = new XmlReader(xml); 
      BaseListLoader loader_refresh = new BaseListLoader(proxy_refresh, reader_refresh); 
      loader_refresh.addLoadListener(new LoadListener() { 
       public void loaderLoadException(LoadEvent le) { 
        super.loaderLoadException(le); 
        MessageBox.alert("Error", le.exception.getMessage(), null); 
       } 
      });   



      columns = new ArrayList<ColumnConfig>(6); 


      columns.add(new ColumnConfig("release_id", "Release ID", 70)); 
      columns.add(new ColumnConfig("item_no", "Item No", 70)); 
      columns.add(new ColumnConfig("deployment_date", "Deployment Date", 150));   
      columns.add(new ColumnConfig("business_unit", "Business Unit", 100)); 
      columns.add(new ColumnConfig("type", "Type", 120)); 
      columns.add(new ColumnConfig("project_name", "Project Name", 120)); 
      columns.add(new ColumnConfig("status", "Status", 100)); 
      columns.add(new ColumnConfig("developer", "Devloper", 100)); 
      columns.add(new ColumnConfig("qa_deployer", "QA Deployer", 125)); 


      store_refresh = new ListStore<BaseModelData>(loader_refresh); 
      ColumnModel columnModel1 = new ColumnModel(columns); 

       System.out.println("removing grid from panel"); 
       grid.removeFromParent(); 

       if(flag==true){ 
        System.out.println("Removing grid1"); 
        grid1.removeFromParent(); 
       } 

      // grid1.removeFromParent(); 
      System.out.println("Creating new grid"); 

      grid1 = new EditorGrid(store_refresh, columnModel1); 

      grid1.setBorders(true); 
      grid1.setAutoHeight(true); 
      grid1.setLoadMask(true); 
      grid1.setStripeRows(true); 
      grid1.getView().setEmptyText("No data found for the given criteria"); 
      System.out.println("Adding grid1 to panel"); 
      loader_refresh.load(); 
      grid1.getStore().getLoader().load(); 
      panel.add(grid1); 

      panel.getLayout().layout(); 

      //submit.hide(); 
      loader_refresh.load(); 

      flag = true; 
      System.out.println("Loader refresh "+loader_refresh.load()+" store refresh is "+store_refresh.getCount()); 



      proxy_refresh = null; 
      store_refresh = null; 
      loader_refresh = null; 
      reader_refresh = null; 
      System.out.println("Loader refresh "+loader_refresh+" store refresh is "+store_refresh+"proxy_refresh "+proxy_refresh+"reader_refresh "+reader_refresh); 

我能夠刪除舊的網格,但添加新的網格到面板時,它不顯示新的數據。

下面是圖片

![在這裏輸入的形象描述] [1]

在此先感謝。

回答

0

我假設你正在使用GXT。 ContentPanel,FitLayout,EditorGrid是Sencha GXT附帶的類,我認爲是2.x版。檢查是否有以「com.extjs」開頭的導入。

您的佈局鏈有問題。您是否在其中一個父面板中使用了FlowLayout?

你試過打電話給forceLayout()或

panel.getLayout().layout(); 

添加新的網後?

+0

嗨Hoss,我在我的應用程序中使用gwt,沒有像網格或面板forceLayout的方法。我嘗試刪除所有刪除和添加到面板的網格,但它不工作。 –

+0

嗨Hoss我能夠在面板中獲得新的網格。謝謝你的幫助。現在我有一個問題。我點擊一個刷新按鈕重新加載新的網格數據,並在此進行rpc調用。所以,當我點擊刷新按鈕時,應該進行rpc調用,並且應該獲取新數據。但因爲它是一個Rpc代理,所以當我第一次單擊刷新按鈕時,我正在獲取數據。我試圖讓代理爲空,並檢查rpc是否獲取新數據,但是當刷新按鈕中第一次調用rpc時,我收到了舊數據。你能幫我嗎? –

+0

您是否嘗試過:grid1.getStore()。getLoader()。load(); –