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"); 
      }
    }
  });

}
Другие вопросы по тегам