2012-08-10 58 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。

希望我能帮上忙。