Javascript 使用JsonRest存储向OnDemandGrid样式的dGrid添加实时查询?

Javascript 使用JsonRest存储向OnDemandGrid样式的dGrid添加实时查询?,javascript,dojo,dgrid,Javascript,Dojo,Dgrid,当dGrid由JsonRest存储支持时,如何实现dijit/TextBox来过滤OnDemandGrid样式dGrid中的数据?我想在框中搜索,并在键入时更新网格 我在dGrid文档中找不到任何示例,尽管这看起来正是问题所在--它使用MemoryStore并将其替换为JsonRest存储不起作用 我是否需要查询存储然后刷新网格?我需要可观察的吗?那么dojo.store.util.SimpleQueryEngine呢?这就是答案的一部分 大概服务器上也必须进行一些更改才能响应查询。结果证明这相

当dGrid由JsonRest存储支持时,如何实现dijit/TextBox来过滤OnDemandGrid样式dGrid中的数据?我想在框中搜索,并在键入时更新网格

我在dGrid文档中找不到任何示例,尽管这看起来正是问题所在--它使用MemoryStore并将其替换为JsonRest存储不起作用

我是否需要查询存储然后刷新网格?我需要可观察的吗?那么dojo.store.util.SimpleQueryEngine呢?这就是答案的一部分


大概服务器上也必须进行一些更改才能响应查询。

结果证明这相当简单。您只需在网格上设置查询属性并调用refresh()

然后,我必须对服务器端代码进行一个简单的更改,以处理?search=任意查询字符串

这是我的密码:

// assuming we have a declarative dijit/TextBox and a reference to our grid in myGrid                                           
// wait for DOM before wiring up our textbox (when dijit parsed)
ready( function() 
{
    var timeoutId = null,
        searchTextBox = registry.byId( 'searchTextBox' );

    searchTextBox.watch( 'value', function( name, oldValue, newValue ) 
    {
        if( newValue.length == 1 )
        {
            return;
        }   

        if( timeoutId ) 
        {
            clearTimeout( timeoutId );
            timeoutId = null;
        };

        timeoutId = setTimeout( function() 
        {
            myGrid.query = { search: newValue };
            myGrid.refresh();
        }, 300 );
    } );
} );