CFGRID - заменить хранилище данных или фильтр по нескольким столбцам
ColdFusion 8
У меня есть cfgrid, который основан на запросе. Он не привязан к функции cfc, потому что я хочу сетку прокрутки, а не сетку с постраничной выкладкой (вы должны указать номер страницы и размер страницы, если вы используете BIND). Я могу выяснить, как настроить фильтр на один столбец, используя следующий код, но мне действительно нужно отфильтровать по трем столбцам...
grid.getDataSource().filter("OT_MILESTONE",t1);
Добавление большего к строке фильтра не делает трюка... оно игнорирует что-то большее, чем первая пара значений.
поэтому... я подумал, что если бы я вызвал функцию, которая передает три значения и вернул мне результаты запроса, я мог бы заменить хранилище данных для сетки.. но я не могу понять синтаксис, чтобы заставить его заменить.
Возвращенная переменная для запроса имеет следующий формат:
{"COLUMNS":["SEQ_KEY","ID","OT_MILESTONE"],"DATA":[[63677,"x","y"]]}
Есть идеи?
2 ответа
После большого количества крови, пота, слез и ругательств... вот ответ, если кому-то еще может понадобиться отфильтровать 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...
Убедитесь, что имена столбцов прописные...
Ты смотрел на queryconvertforgrid()
?
http://www.cfquickdocs.com/cf9/
Обновление: вы смотрели на это?
http://www.danvega.org/blog/index.cfm/2008/3/10/ColdFusion-8-Grid-Filtering
http://cfsilence.com/blog/client/index.cfm/2007/8/9/Filtering-Records-In-An-Ajax-Grid