JQGRID - Выбор столбца слишком медленный, когда setGroupHeaders определен в сетке
У меня проблема с выбором столбца, очень медленно отображается результат после выбора столбца для добавления или удаления. Я заметил, что "setGroupHeaders" является проблемой. Колонка пар Chooser и Group Header, похоже, не имеет хороших результатов.
Я на JqGrid 4.3.1, с последними библиотеками jquery. Проблема возникла и в предыдущих версиях (мне пришлось обновлять все библиотеки, чтобы убедиться, что проблема не в старых версиях).
Я действительно искал на форумах, чтобы найти какой-либо пост об этом, но я ничего не могу найти. Я один с этой проблемой? Это ссылка?
Заранее спасибо за вашу помощь!
1 ответ
У меня была такая же проблема с чрезвычайно медленным выбором столбцов на большом количестве столбцов (>500 столбцов). Я не могу принимать большинство препаратов для повышения производительности (я имею в виду твики), так как я использую TreeGrid. Иногда для применения и перерисовки сетки требуется более 3 минут.
Однако я придумал грязный, жестокий способ обойти. Уникальная вещь для меня - я всегда сохраняю копию данных (локальный формат json в js). Следовательно, любая перерисовка вообще не будет иметь сетевого трафика. Итак, я сам реализую средство выбора столбца, выполняю жесткую разгрузку и воссоздаю сетку. Теперь для применения выбранных столбцов и перерисовки требуется не более 10+ секунд.
Вот код моего выбора столбца. Как вы видите, он очень специализирован для моей программы, но вы можете понять. Графический интерфейс фанатов отсюда И, пожалуйста, прости меня, если я сделал какой-то паршивый код.
choose_column: function() {
var me = this;
var rn=this.response_json.colNames;
var rm=this.response_json.colModel;
var line_text;
var html_text = '<select id="column_selector" class="multiselect" multiple="multiple" name="countries[]" style="width: 500px; margin: 0px auto; height: 340px; ">\n';
for ( var i = 0 ; i < rn.length; i++ ) {
if (rm[i].hidden) {
line_text = '<option value="'+i+'">'+rn[i]+'</option>\n';
} else {
line_text = '<option value="'+i+'" selected="selected">'+rn[i]+'</option>\n';
}
html_text += line_text;
}
html_text += '</select>';
jQuery("#dlg_choose_columns").empty()
.append(html_text);
jQuery(".multiselect").multiselect({
sortable: true,
searchable: true,
hide: 'explode',
show: 'blind',
dividerLocation: 0.5
});
jQuery("#dlg_choose_columns").dialog({
width: 535,
height: 550,
modal: true,
title: 'Select Columns',
hide: 'explode',
buttons: {
"Ok": function() {
var selected_values = jQuery(".multiselect").val();
for ( var i = 0; i < rn.length; i++ ) {
rm[i].hidden = true;
}
for ( var i = 0; i < selected_values.length; i++ ) {
delete rm[selected_values[i]].hidden;
}
jQuery("#dlg_choose_columns").dialog("close");
me.unload_jqgrid();
me.create_grid(null, me.is_tree, me.need_plot);
},
"Cancel": function() {
jQuery("#dlg_choose_columns").dialog("close");
}
}
});
}