2013-09-26 3 views
0

Мы используем сетку DHTMLX. Нужна помощь, пожалуйста.Найти указатель столбцов (ов) после его перемещения

У меня есть таблица, и каждый столбец (с фильтром/выпадающим списком) выделяет id, например. fac, date, sel, loc, tag ... и т. д.

У нас есть жесткий код индекса столбцов для установки и получения cookie в другом месте.

function doInitGrid(){ 

mygrid.setColumnIds("fac,date,sel,loc,tag"); //set ids 
mygrid.attachEvent("onFilterStart",function(ind,data) 
          { 
setCookie("Tray_fac_filter",mygrid.getFilterElement(0).value,365); //column index 0 
setCookie("Tray_loc_filter",mygrid.getFilterElement(3).value,365);//column index 3 
setCookie("Tray_tag_filter",mygrid.getFilterElement(4).value,365); //column index 4 

mygrid.getFilterElement(0).value = getCookie("Tray_fac_filter") 
mygrid.getFilterElement(3).value = getCookie("Tray_dep_filter") 
mygrid.getFilterElement(4).value = getCookie("Tray_prg_filter") 
}); 
} 

Но когда столбцы сдвигаются, проблема возникает как индекс изменения столбцов пока он установлен в SetCookie/getCoookie

DHTMLX позволяет получить индекс ИО с помощью -

var colInd = grid.getColIndexById(id); 
eg: var colInd = grid.getColIndexById(date); // outputs 1. 
After moving the date column to the end -- fac, sel, loc, tag, date // it will output 4. 

Однако, у нас есть около 14 столбцов, которые могут быть перемещены/переставить, и я мог бы использовать

var colInd = grid.getColIndexById(id); 15 times 

var facInd = grid.getColIndexById("fac"); 
var dateInd = grid.getColIndexById("date"); 
var selInd = grid.getColIndexById("sel"); 
var locInd = grid.getColIndexById("loc"; 
var tagInd = grid.getColIndexById("tag"); 

и поместите эти переменные в файл set/get cookie. Я думал, был ли лучший способ.

Чтобы лучше понять код, я поставил минимизированную версию кода в скрипке.

http://jsfiddle.net/19eggs/s5myW/2/

ответ

0

У вас есть лучший ответ, я думаю. Делайте это в цикле, и это проще:

var cookie_prefix = "Fray_filter_"; 
var cookie_dur = 365; 
var num_cols = dhx_grid.getColumnCount(); 

// filter vals to cookies 
for (var col_idx=0; col_idx<num_cols; col_idx++) { 
    var filter = mygrid.getFilterElement(col_idx) 
    if (filter) { // not all columns may have a filter 
    var col_id = dhx_grid.getColumnId(col_idx); 
    var cookie_name = cookie_prefix+col_id; 
    setCookie(cookie_name, filter.value, cookie_dur); 
    } 
} 

// cookies to filter vals 
for (var col_idx=0; col_idx<num_cols; col_idx++) { 
    var col_id = dhx_grid.getColumnId(col_idx); 
    var filter_val = getCookie(cookie_prefix+col_id); 
    var filter = mygrid.getFilterElement(col_idx) 
    filter.value = filter_val; 
} 
0

Вы можете использовать dhtmlxgrid родное событие, чтобы назначить правильный идентификатор каждый столбец перемещается. Событие вызывается onAfterCMove, вы можете проверить документацию здесь. onAfterCMove Event

Вы бы сделать что-то вроде:

mygrid.attachEvent('onAfterCMove',function(cInd,posInd){ 
//Your processing here to change the cookies; where cInd is the index of the column moved 
//and posInd, is the position where it Was moved 
}): 
Смежные вопросы