2012-07-30 47 views
0

我試圖將文本框中的值作爲dojo數據網格中的查詢參數傳遞,並希望在下面列出的兩個問題上得到澄清。道場電網啓動與查詢參數調用服務器發起搜索,並帶回結果(即在數據網格diplayed)將文本框的值傳遞給dojo網格的查詢參數

  1. 是否有可能基於價值重新加載網格通過調用刷新(dijit.byId(「mygrid」)文本。刷新

  2. 如果是的話,我怎麼能傳遞文本框的值作爲查詢參數數據網格。

上市以下是我的相關代碼

 function reload(){ 
     dijit.byId("mygrid").refresh; 
    } 


    <div class="test"> 
      <input id="searchParam" > 
      <button dojoType="dijit.form.Button" type="submit" onclick=reload()> 
       Search 
      </button> 


     </div> 

    <div dojoType="dojox.grid.DataGrid" 
           id="mygrid" 
           jsid="mygrid" 
             store="dojox.data.JsonRestStore" 
    target="<c:url value='members' />"> 
           query="{ 
           searchCriteria: ? TODO How to pass value of text box here?, 

           }" 
           rowsPerPage="1000" 
           autoWidth="true" 

           autoHeight="true" 
           selectionMode="single" 
           selectable="true" 
           errorMessage="Error loading data" 
           noDataMessage="<span class='dojoxGridNoData'>No members found.</span>"> 
       </div> 

回答

0

你應該能夠做到像下面這樣:

function reload() { 
    var val = dojo.byId('searchParam').attr('value'); 
    dijit.byId("mygrid").setQuery({ propName: val }); 
} 

您需要正確地構建查詢{ propName: val }

+0

Thanks @Craig Swing。我能夠調用reload()函數並在網格上使用.setQuery。我還在網格中運行了一個filter()方法,它確實會對服務器產生類似的調用,但網格不會刷新。 – aprajitha 2012-07-31 17:15:30

+0

當我點擊一個按鈕(onClick事件)時,我能夠調用重載js()。你知道如何在用戶按下文本框上的ENTER鍵時調用相同的功能。我不確定哪個事件會觸發此事。我嘗試使用dojo表單(dijit.form.Form)並在'onSubmit'事件中調用js。這似乎導致整個頁面重新加載並且也沒有傳遞所需的參數(從而導致調用不同的控制器方法)。有沒有一種方法可以避免使用dijit.form.Form,但在用戶單擊ENTER鍵時仍會觸發重新加載js。 – aprajitha 2012-07-31 17:35:51

+0

不要介意我先前的查詢。從不同的帖子進入[示例](http://jsfiddle.net/x3MMA/)。它沒有做一個完整的頁面重新加載,但它仍然使用diji.Form。必須更好地理解它。我想在我的第一個例子中,我沒有做stopEvent()。 – aprajitha 2012-07-31 18:49:04