Dojo dgrid:当我点击过滤器按钮时,使用不同字段过滤来自商店的数据

时间:2015-10-12 07:36:55

标签: dojo store dgrid dstore

我正在使用'dgrid / Grid'和dstore / RequestMemory来创建网格和存储数据。现在我想根据字段中的值过滤数据(参见img)。我不确定在使用简单的Dgrid和dstore时如何过滤数据。

#!/usr/bin/python

Dgrid Page 如果我使用一些不同的商店或网格,任何帮助将不胜感激或建议。

1 个答案:

答案 0 :(得分:0)

我得到了我的问题的解决方案。在过滤器按钮上单击我已编写所有过滤逻辑,最终存储将设置为dgrid:

        on(document.getElementById("filter"), "click", function(event) {

            var store= new RequestMemory({
                target: 'getReportData',
                idProperty: "cashflowId",
                headers: structure
            });

            var from=dijit.byId('from').value;
            var to=dijit.byId('to').value;
            var curr=dijit.byId('currency').value;
            var nos=dijit.byId('nostro').value;
            var authStatus=dijit.byId('authStatus').value;
            var filterStore;
            var finalStore=store;
            var filter= new store.Filter();
            var dateToFindFrom;
            var dateToFindTo;

            if (from != "" && from !== null) {

                var yyyy = from.getFullYear().toString();
                var mm = ((from.getMonth()) + 1).toString(); // getMonth() is zero-based
                var dd  = from.getDate().toString();

                if(mm <= 9){
                    mm= "0" + mm;
                }
                if(dd <= 9){
                    dd= "0" + dd;
                }

                dateToFindFrom =yyyy + mm + dd;

                filterStore= filter.gte('valueDate', dateToFindFrom);
                finalStore=finalStore.filter(filterStore);

            }
            if (to != "" && to !== null) {
                var yyyy = to.getFullYear().toString();
                var mm = ((to.getMonth()) + 1).toString(); // getMonth() is zero-based
                var dd  = to.getDate().toString();

                if(mm <= 9){
                    mm= "0" + mm;
                }
                if(dd <= 9){
                    dd= "0" + dd;
                }


                dateToFindTo =yyyy + mm + dd;

                filterStore= filter.lte('valueDate', dateToFindTo); //.lte('valueDate', dateToFindTo);
                finalStore=finalStore.filter(filterStore);
            }

            if(curr != "" && curr !== null) {
                filterStore= filter.eq('currency', curr);
                finalStore=finalStore.filter(filterStore);
            }
            if(nos != "" && nos !== null) {
                filterStore= filter.eq('nostroAgent',nos);
                finalStore=finalStore.filter(filterStore);
            }

            if(authStatus != "" && authStatus !== null) {
                    if (authStatus=='ALL') {
                        var both= [true, false];
                        filterStore= filter.in('approved', both);
                        finalStore=finalStore.filter(filterStore);
                    } else if (authStatus=='Authorised Only') {
                        filterStore= filter.eq('approved', true);
                        finalStore=finalStore.filter(filterStore);
                    } else if (authStatus=='Unauthorised Only') {
                        filterStore= filter.eq('approved', false);
                        finalStore=finalStore.filter(filterStore);
                    };
            };
            grid.set('collection', finalStore);

        });