将文本框值传递到dojo网格';s查询参数

将文本框值传递到dojo网格';s查询参数,dojo,dojox.grid.datagrid,Dojo,Dojox.grid.datagrid,我试图将该值作为dojo数据网格中的查询参数传递到文本框中,并希望澄清下面列出的两个问题。dojo网格使用查询参数启动对服务器的调用,以启动搜索并返回结果(显示在数据网格上) 是否可以通过调用refresh(dijit.byId(“mygrid”).refresh)根据文本中的值重新加载网格 如果是,如何将文本框的值作为查询参数传递给数据网格 下面列出的是我的相关代码 function reload(){ dijit.byId("mygrid").refresh;

我试图将该值作为dojo数据网格中的查询参数传递到文本框中,并希望澄清下面列出的两个问题。dojo网格使用查询参数启动对服务器的调用,以启动搜索并返回结果(显示在数据网格上)

  • 是否可以通过调用refresh(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>