将文本框值传递到dojo网格';s查询参数
我试图将该值作为dojo数据网格中的查询参数传递到文本框中,并希望澄清下面列出的两个问题。dojo网格使用查询参数启动对服务器的调用,以启动搜索并返回结果(显示在数据网格上)将文本框值传递到dojo网格';s查询参数,dojo,dojox.grid.datagrid,Dojo,Dojox.grid.datagrid,我试图将该值作为dojo数据网格中的查询参数传递到文本框中,并希望澄清下面列出的两个问题。dojo网格使用查询参数启动对服务器的调用,以启动搜索并返回结果(显示在数据网格上) 是否可以通过调用refresh(dijit.byId(“mygrid”).refresh)根据文本中的值重新加载网格 如果是,如何将文本框的值作为查询参数传递给数据网格 下面列出的是我的相关代码 function reload(){ dijit.byId("mygrid").refresh;
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>
函数重载(){
dijit.byId(“mygrid”).refresh;
}
搜寻
query=“{
搜索条件:?TODO如何在此处传递文本框的值?,
}"
rowsPerPage=“1000”
autoWidth=“true”
autoHeight=“true”
selectionMode=“single”
可选=“真”
errorMessage=“加载数据时出错”
noDataMessage=“未找到任何成员。”>
您应该能够执行以下操作:
function reload() {
var val = dojo.byId('searchParam').attr('value');
dijit.byId("mygrid").setQuery({ propName: val });
}
您需要正确构建查询
{propName:val}
谢谢@Craig Swing。我能够调用reload()函数并在网格上使用.setQuery。我还在网格上运行了一个filter()方法,这确实导致了对服务器的类似调用,但网格没有刷新。我能够调用reload js()当我点击一个按钮(onClick事件)时。你知道当用户按下文本框上的ENTER键时,我如何调用相同的按钮吗?我不确定哪个事件会触发此事件。我尝试使用dojo表单(dijit.form.form)并在“onSubmit”事件中调用js。这似乎会导致整个页面重新加载,并且没有传递所需的参数(从而导致调用不同的控制器方法)。是否有一种方法可以避免使用dijit.form.form,但在用户单击ENTER键时仍会触发重新加载js。更不用说我之前的查询了。我从另一篇文章中遇到了这一问题。它没有重新加载整个页面,尽管它仍然使用diji.form。我必须更好地理解它。我认为在我的第一个示例中,我没有执行stopEvent()。如果其“onsubmit”返回true,则任何表单(也是dijit.form.form)都会将页面重新加载到操作
href。使用dojo.stopEvent主要用于带有onclick的a
标记,使用if(this.validate())dojo.xhrPost({url:this.action,form:this})覆盖dijit.form.form
.onsubmit()
);返回false>