如何让Dojo ClientFilter缓存查询不区分大小写?

时间:2011-06-22 09:42:39

标签: caching case-insensitive dojo

我正在使用带有ClientFilter选项的JsonQueryRestStore来缓存查询和数据, 卸载已经发送给客户端的数据的重复xhr询问的服务器。

我写的代码工作得很好,除了一个小问题。 我有一个过滤选择用户输入的位置并限制可用的选项。 此字段没有特定的大小写,因此输入“mi”,“MI”,“Mi”,您将获得相同的结果选择全部大写。 问题是,即使我使用选项: queryOptions:{ignoreCase:true} 和/或大写:在字段上为true,似乎ClientìFilter忽略它并为每个案例组合查询服务器,因此它将每个案例缓存为不同的案例组合。 即 对于两个字母,您可以有4种组合:mi,MI,Mi,mI

现在,如果ClientFilter没有正确处理,我想强制所有输入大写。但我无法让它工作.. ClientFilter以用户身份发送和缓存查询 键入它,即使我尝试转换它。

知道如何解决这个问题吗?

我在javascript以下的简化代码:

        dojo.require('dojox.data.FilteringSelect');
        dojo.require('dojox.data.ClientFilter');
        dojo.require('dojox.data.JsonQueryRestStore');
        var fooselect = new dijit.form.FilteringSelect({
            id : "fooId",
            store: new dojox.data.JsonQueryRestStore({ target: '/fooajax', labelAttribute: 'description', cacheByDefault: true }), 
            searchAttr : "description",
            searchDelay : 300,
            autocomplete : true,
            uppercase: true,
            trim : true,
            required : ${required},
            queryOptions: {ignoreCase: true}
        }, "fooInput");

HTML:

    <input id="fooInput">

1 个答案:

答案 0 :(得分:0)

在queryOptions中,您可以添加具有true值的缓存键,如下所示。

queryOptions="{cache: true,ignoreCase: true}"

请告诉我们是否有效。 参考。 URL。 http://mikoskay.net/158-client-side-sorting-with-jsonreststore.html