2012-10-13 4 views
0

저는 jqGrid에서 시작합니다. 나는이 코드를 작성 Genereate 그리드jqGrid 검색에서 서버에 보내기 전에 데이터를 사용자 정의하는 방법

grid.jqGrid({ 
    url: 'jQGridHandler.ashx', 
    postData: { ActionPage: 'Report5',type:'Fill' }, 
    datatype: 'json', 
    height: 530, 
    colNames: ['id','UnitPrice'], 
    colModel: [ 
     { name: 'Id', sortable: true, search: true, editable: false, hidden: true, 
      key: true }, 
     { name: 'UnitPrice', shrinkToFit: true, width: 50, 
      searchoptions: { 
       sopt: ['eq', 'ne', , 'le', 'ge'], 
       dataInit: function (elem) { 
        $(elem).keyup(function() { 
         var str = $(this).val(); 
         str = str.replace(/,/g, ""); 
         $(this).val(addCommas(str)); 
        }); 
       } 
      }} 
    ], 
    gridview: true, 
    search: true, 
    rowNum: 100, 
    rowList: [100, 200, 300], 
    pager: '#pager', 
    viewrecords: true, 
    rownumbers: true, 
    footerrow: true, userDataOnFooter: true, altRows: true, 
}); 
grid.jqGrid('navGrid', '#pager', { add: false, edit: false, del: false, search: true }, 
    {}, 
    {}, 
    {}, 
    { multipleSearch: true }); 
grid.jqGrid('filterToolbar', { defaultSearch: 'cn', stringResult: true }); 

function addCommas(nStr) { 
    nStr += ''; 
    var x = nStr.split('.'); 
    var x1 = x[0]; 
    var x2 = x.length > 1 ? '.' + x[1] : ''; 
    var rgx = /(\d+)(\d{3})/; 

    while (rgx.test(x1)) { 
     x1 = x1.replace(rgx, '$1' + ',' + '$2'); 
    } 
    return x1 + x2; 
} 

내가 검색 상자에 난 기능 addCommas 쓰기, ,과 단가를 입력 번호, 번호 3 문자 3 문자의 sperate을 선택하고 작업을 사용자가 원하는 좋은 뷰트 사용자가 가격을 입력 할 때와 검색 버튼을 누르면 단가가 서버로 전송되지 않습니다. 이 사진

enter image description here

enter image description here

저를 도와주세요 검색 버튼을 클릭 한 후 예. 모두 고마워요

답변

4

서버로 보내기 전에 검색 필터를 수정하는 방법에는 여러 가지가 있습니다.

우선 입력 필드의 데이터를 변경할 때마다 change 이벤트에 명시 적으로 전화하는 것이 좋습니다. Searing Dialog는 검색 필터의 내부 표현을 유지하고 change 이벤트 처리기에서 수정합니다. 따라서 $(this).change(); 또는 $(this).trigger('change')을 추가하면 현재 문제가 해결 될 수 있습니다.

그런데 검색 필터에 대한 정보가 filters 매개 변수로 서버에 전송되는 것을 보았습니다. filters 속성을 postData으로 가져올 수 있습니다. postData 매개 변수에 대한 참조를 얻으려면 grid.jqGrid("getGridParam", "postData")을 사용할 수 있습니다.

beforeSearchfilterToolbar 인 경우 콜백은 서버에 보내기 전에 필터에 액세스 할 수있는 곳입니다. onSearch은 검색 대화 상자에서 사용되는 또 다른 콜백입니다. 일반적인 방법을 사용하려면 jqGrid의 beforeRequest 콜백을 사용하는 것이 좋습니다. 콜백 내부에서 postData$(this).jqGrid("getGridParam", "postData")이고 filters 속성은 수정할 수 있습니다. filters 속성의 수정 예는 the answer에서 찾을 수 있습니다.

+0

감사합니다. @Oleg 당신은 js 및 jqGrid 플러그인에 대해 매우 전문적입니다. 나는 너처럼 일하는 것을 좋아한다. – Pouya

+0

@ M.B : 환영합니다! – Oleg

관련 문제