2012-08-10 59 views
0

我有一個DataGrid顯示搜索信息,創建並追加到我的結果窗格div當我點擊搜索按鈕。問題是,當我再次搜索時,第一個仍然存在,所以新的網格會被追加,並且從第一個填充div開始,它不會出現。有沒有辦法獲得對原始窗格的引用,重置商店並刷新它?由於搜索函數結束並且變量超出了範圍,我放棄了對該對象的引用。 Dojo是否使用全局變量,如果它確實如何設置這些變量,還是有不同的方式來做到這一點?如何重新填充Dojo DataGrid?

感謝

代碼:

function loadAdvancedSearchResultsTable() { 
      console.debug("inside loadAdvancedSearchResultsTable()"); 
      // See: http://dojo-toolkit.33424.n3.nabble.com/Dojo-dijit-form-Form-form-submit-on-keyboard-enter-td3359280.html 
      var name = dijit.byId('search_name').get("value"); 
      var callingNumber = dijit.byId("search_callingnumber").get("value"); 
      var calledNumber = dijit.byId('search_callednumber').get("value"); 
      var durationBetweenStart = dijit.byId('search_durationbetween_start').get("value"); 
      var durationBetweenEnd = dijit.byId('search_durationbetween_end').get("value"); 
      var dateStart = dijit.byId('search_datebetween_start').get("value"); 
      var dateEnd = dijit.byId('search_datebetween_end').get("value"); 

      //var executeSearchPhpLink = "modules/content_panes/searchresults.php?"; 
      var executeSearchPhpLink = "modules/data_store/search_results_datastore.php?"; 
      var executeSearchPhpLinkHasElement = false; 

      if(name != "") { 
       executeSearchPhpLink += "name=" + name; 
       executeSearchPhpLinkHasElement = true; 
      } 

      if(callingNumber != "") { 
       if(executeSearchPhpLinkHasElement == true) { 
        executeSearchPhpLink += "&"; 
       } 
       executeSearchPhpLink += "callingNumber=" + callingNumber; 
       executeSearchPhpLinkHasElement = true; 
      } 

      if(calledNumber != "") { 
       if(executeSearchPhpLinkHasElement == true) { 
        executeSearchPhpLink += "&"; 
       } 
       executeSearchPhpLink += "calledNumber=" + calledNumber; 
       executeSearchPhpLinkHasElement = true; 
      } 

      if(durationBetweenStart != "") { 
       if(executeSearchPhpLinkHasElement == true) { 
        executeSearchPhpLink += "&"; 
       } 
       executeSearchPhpLink += "durationBetweenStart=" + durationBetweenStart; 
       executeSearchPhpLinkHasElement = true; 
      } 

      if(durationBetweenEnd != "") { 
       if(executeSearchPhpLinkHasElement == true) { 
        executeSearchPhpLink += "&"; 
       } 
       executeSearchPhpLink += "durationBetweenEnd=" + durationBetweenEnd; 
       executeSearchPhpLinkHasElement = true; 
      } 

      if(dateStart != null) { 
       if(executeSearchPhpLinkHasElement == true) { 
        executeSearchPhpLink += "&"; 
       } 
       executeSearchPhpLink += "dateStart=" + dateStart; 
       executeSearchPhpLinkHasElement = true; 
      } 

      if(dateEnd != null) { 
       if(executeSearchPhpLinkHasElement == true) { 
        executeSearchPhpLink += "&"; 
       } 
       executeSearchPhpLink += "dateEnd=" + dateEnd; 
       executeSearchPhpLinkHasElement = true; 
      } 

      console.debug("About to set the content pane href to " + executeSearchPhpLink); 

      // Create the data store to be used 
      var searchResultsStore = new dojo.data.ItemFileReadStore({url: executeSearchPhpLink}); 

      // Set the layout structure 
      var gridStructure = [ 
       { field: 'user', name:'Name', width:'15%' }, 
       { field: 'dn', name:'Calling Number', width:'15%' }, 
       { field: 'origcalledparty', name:'Called Number', width:'15%' }, 
       { field: 'callstarttime', name:'Start Time', width:'10%' }, 
       { field: 'callendtime', name:'End Time', width:'10%' }, 
       { field: 'duration', name:'Duration', width:'10%' }, 
       { field: 'datetime', name:'Date', width:'25%' } 
      ]; 

      // Construct the data grid 
      var searchResultsDataGrid = new dojox.grid.DataGrid({ 
       store: searchResultsStore, 
       clientSort: true, 
       rowSelector: true, 
       structure: gridStructure 
      },document.createElement('div')); 

      // Append the new grid to the search results content pane 
      dojo.byId("searchResultsContentPane").appendChild(searchResultsDataGrid.domNode); 

      // Call startup to render the grid 
      searchResultsDataGrid.startup(); 

     } 

回答

0

定義searchResultsStore和searchResultsDataGrid瓦爾使用關鍵字VAR的功能之外,在全球範圍內功能,無需關鍵字使用它們:如果doesnt't

var searchResultsDataGrid = null; 
function abc() { 
    searchResultsDataGrid = new Abc(...); 
} 

幫助,您可以使用dojo.empty()或destroyDescendants()來顯式清空ResultDiv。

希望我能幫上忙。