2011-07-29 6 views
6

저는 첫 번째 ASP.NET MVC 3 앱을 만들고 jqGrid를 사용하고 있습니다. 내 열 중 하나 인 "Flavor Created"는 날짜 열이며 DatePicker를 사용하여 해당 열의 표를 필터링하고 싶습니다. 현재 발생하는 상황은 다음과 같습니다. 사용자가 열 머리글 필터 상자를 클릭하고 날짜 선택 도구를 표시 한 다음 사용자가 년, 월 및 일 클릭을 선택합니다. 선택기가 사라지고 텍스트 상자에 날짜 03/28/2009가 남습니다. 실제로 필터를 작동 시키려면 해당 상자를 클릭하고 Enter 키를 눌러야합니다.이 키는 사용자에게 약간 짜증납니다.jqGrid DatePicker 필터링없이 Enter 키

사용자가 해당 날짜를 클릭 할 때 필터가 자동으로 실행되는 방법이 있습니까?

(여담으로, 나는 '완료'버튼의 사용이 나는. 하루에 클릭 아마도 그건 내가 부족 설정이있을 때마다 피커가 사라질 이후를 위해 무엇인지 모르겠습니다.)

다른 사람이이 기능을 필요로하고 해결했습니다. 나는이 제안하는 일부 웹 사이트에 사람을 본대로

dataInit: function (elem) { 
    $(elem).datepicker({ changeYear: true, changeMonth: true, showButtonPanel: true, 
    onSelect: function (dateText, inst) { 
     $("#icecreamgrid")[0].trigger("reloadGrid"); 
    } 
    }) 
} 

,하지만 작동하지 않았다

는이 같은 뭔가를 시도했다.

답변

16

당신은

dataInit: function (elem) { 
    $(elem).datepicker({ 
     changeYear: true, 
     changeMonth: true, 
     showButtonPanel: true, 
     onSelect: function() { 
      if (this.id.substr(0, 3) === "gs_") { 
       // in case of searching toolbar 
       setTimeout(function(){ 
        myGrid[0].triggerToolbar(); 
       }, 50); 
      } else { 
       // refresh the filter in case of 
       // searching dialog 
       $(this).trigger("change"); 
      } 
     }  
    }); 
} 

업데이트]으로 시도 할 수 있습니다 : 4.3.3있는 jqGrid가 dataInitthis으로 그리드의 DOM을 초기화 버전을 시작으로. 따라서 위의 코드에서 변수 myGrid을 사용할 필요가 없습니다. 대신에 하나의 사용할 수 있습니다

dataInit: function (elem) { 
    var self = this; // save the reference to the grid 
    $(elem).datepicker({ 
     changeYear: true, 
     changeMonth: true, 
     showButtonPanel: true, 
     onSelect: function() { 
      if (this.id.substr(0, 3) === "gs_") { 
       // in case of searching toolbar 
       setTimeout(function() { 
        self.triggerToolbar(); 
       }, 50); 
      } else { 
       // refresh the filter in case of 
       // searching dialog 
       $(this).trigger("change"); 
      } 
     }  
    }); 
} 

무료있는 jqGrid는 mode 재산과 같은 추가 정보가 포함 dataInit의 두 번째 options 매개 변수와 함께 호출합니다. mode 속성의 값은 필터 도구 모음 내부에서 호출 할 경우 "filter" (대화 상자를 검색하는 경우에는 "search")입니다. 따라서 다음 코드를 사용할 수 있습니다.

dataInit: function (elem, options) { 
    var self = this; // save the reference to the grid 
    $(elem).datepicker({ 
     changeYear: true, 
     changeMonth: true, 
     showButtonPanel: true, 
     onSelect: function() { 
      if (options.mode === "filter") { 
       // in case of searching toolbar 
       setTimeout(function() { 
        self.triggerToolbar(); 
       }, 0); 
      } else { 
       // refresh the filter in case of 
       // searching dialog 
       $(this).trigger("change"); 
      } 
     }  
    }); 
} 
+1

Oleg은 잘 작동합니다. 감사. Esc 키를 누르면 GET이 발생하지만 그와 함께 살 수 있습니다. 많은 데이터를 되돌릴 수는 없습니다. 나는 triggerToolbar()를 호출하기 전에 점검하는 func을 호출 할 수 있습니다. – itsmatt

+1

아마도 'onClose' 내부가 아닌'onSelect' 내부에서'triggerToolbar'를 호출하는 것이 더 낫습니다. 툴바 검색을 강제하고 싶은 상황과 그렇지 않은 상황을 정확하게 기술 할 수 있습니다. 일반적으로 onSelect는 사용자가 새 날짜를 선택하면 호출되는 이벤트입니다. – Oleg

+0

그래, 그게 훨씬 잘 작동 해. 최고, Matt – itsmatt

관련 문제