2014-12-18 2 views
1

현재 다중 선택 필터에 수직 스크롤 막대를 활성화하는 데 문제가 있습니다.JQGrid 다중 선택 필터의 스크롤 막대 - 설정 방법

아래 코드는 "DemandId"에 대해 multiselect filter를 설정하는 코드입니다 (setSearchSelect("DemandId", jQuery("#listTable"));).

enter image description here

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

은 어떻게있는 jqGrid의 다중 선택 필터에서 세로 스크롤 막대를 사용할 수 있습니다.

도움이 매우 감사합니다.

답변

2

현재 height: "auto" 옵션을 multiselect으로 사용합니다. 대신에 elem.childElementCount 또는 $elem.find("option").length을 사용하여 항목 수를 얻을 수 있습니다. 너무 많은 항목이있는 경우 height: "auto" 대신 height 매개 변수에 고정 된 값을 사용할 수 있습니다. 또는 max-height CSS 속성을 open 콜백 내에 $menu의 직접 하위 인 <ul>으로 설정할 수 있습니다. 예를 들어, 사용하려고 시도합니다.

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

감사합니다 Dr. @Oleg, 잘 설명하면 완벽한 대답입니다. – Avijit

+0

@Avijit : 환영합니다! – Oleg