我们正在使用 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 允许使用 -- 获取 id 的索引
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 中。我在想是否有更好的方法。
为了更好地理解代码,我将代码的最小化版本放在了小提琴中。