CFGRID - заменить хранилище данных или фильтр по нескольким столбцам - PullRequest
1 голос
/ 12 мая 2010

ColdFusion 8

У меня есть cfgrid, основанный на запросе. Он не привязан к функции cfc, потому что я хочу сетку прокрутки, а не сетку с постраничной выкладкой (вы должны указать номер страницы и размер страницы, если вы используете BIND). следующий код, но мне действительно нужно отфильтровать по трем столбцам ...

grid.getDataSource().filter("OT_MILESTONE",t1);

Добавление большего к строке фильтра не дает результата ... оно игнорирует что-то большее, чем первая пара значений ..

итак ... Я подумал, что если я вызову функцию, которая передает три значения и вернет мне результаты запроса, я мог бы заменить хранилище данных для сетки ... но я не могу понять синтаксис, чтобы заставить его заменить.

Возвращаемая переменная для запроса имеет следующий формат:

{"COLUMNS":["SEQ_KEY","ID","OT_MILESTONE"],"DATA":[[63677,"x","y"]]} 

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 15 мая 2010

после большого количества крови, пота, слез и ругательств ... вот ответ, если кому-то еще понадобится отфильтровать cfgrid по нескольким переменным:

            var w1 = ColdFusion.getElementValue('wbs');
            var t1 = ColdFusion.getElementValue('task');    
            var p1 = ColdFusion.getElementValue('project');

            grid = ColdFusion.Grid.getGridObject('data');
            store = grid.getDataSource();
            store.clearFilter();
            store.filterBy(function myfilter(record) {
                    var wantit = true;
                        if (trim(w1) != '') {
                            if(record.get('WBS_ID') != w1) {
                                wantit = false;
                        }}
                        if (trim(t1) != '') {
                            if(record.get('OT_MILESTONE') != t1) {
                                wantit = false;
                        }}
                        if (trim(p1) != '') {
                            if(record.get('PROJECT') != p1) {
                                wantit = false;
                        }}

                    return wantit;
                });

            ColdFusion.Grid.refresh('data',false); 

вам понадобится функция обрезки JS ...

Убедитесь, что имена столбцов прописные ...

...