2014-12-18 4 views
1

В настоящее время я сталкиваюсь с проблемой, позволяя использовать вертикальную полосу прокрутки для мультиселекторных фильтров.Полоса прокрутки JQGrid Multiselect - как установить

Ниже приведен код, в котором я устанавливаю фильтр мультизависимости для «DemandId» следующим образом: setSearchSelect("DemandId", jQuery("#listTable"));.

setSearchSelect = function (columnName, grid) { 
      grid.jqGrid('setColProp', columnName, 
        { 
         searchoptions: { 
          clearSearch: false, 
          sopt: ['eq', 'ne'], 
          value: buildSearchSelect(getUniqueNames(columnName, grid)), 
          attr: { multiple: 'multiple', size: 3 }, 
          dataInit: dataInitMultiselect 
         } 
        } 
     ); 
dataInitMultiselect = function (elem) { 
        setTimeout(function() { 
         var $elem = $(elem), id = elem.id, 
          inToolbar = typeof id === "string" && id.substr(0, 3) === "gs_", 
          options = { 
           selectedList: 2, 
           height: "auto", 
           checkAllText: "all", 
           uncheckAllText: "no", 
           noneSelectedText: "Any", 
           open: function() { 
            var $menu = $(".ui-multiselect-menu:visible"); 
            $menu.width("auto"); 
            return; 
           } 
          }, 
          $options = $elem.find("option"); 
         if ($options.length > 0 && $options[0].selected) { 
          $options[0].selected = false; // unselect the first selected option 
         } 
         if (inToolbar) { 
          options.minWidth = 'auto'; 
         } 
         //$elem.multiselect(options); 
         $elem.multiselect(options).multiselectfilter({ placeholder: '' }); 
         $elem.siblings('button.ui-multiselect').css({ 
          width: inToolbar ? "98%" : "100%", 
          marginTop: "1px", 
          marginBottom: "1px", 
          paddingTop: "3px" 
         }); 
        }, 50); 

enter image description here

Как включить вертикальную полосу прокрутки в MULTISELECT фильтре JQGrid.

Любая помощь очень ценится.

ответ

2

Вы используете height: "auto" вариант multiselect в настоящее время. Вместо этого вы можете использовать elem.childElementCount или $elem.find("option").length, чтобы получить количество элементов. Если у вас слишком много предметов, вы можете использовать некоторое фиксированное числовое значение для параметра height вместо height: "auto". В качестве альтернативы вы можете установить свойство max-height CSS на <ul>, который является прямым потомком $menu внутри обратного вызова open. Например, попробуйте использовать

open: function() { 
    var $menu = $(".ui-multiselect-menu:visible"); 
    $menu.width("auto"); 
    $menu.find(">ul").css("maxHeight", "50px"); // some max-height value 
    return; 
} 
+0

Спасибо, доктор @ Олег, за отличный ответ с объяснением. – Avijit

+0

@Avijit: Добро пожаловать! – Oleg

Смежные вопросы