2011-02-02 2 views
3

저는 ASP.net에서 jqGrid 3.8.2를 사용하고 있습니다. 아주 간단한 jqGrid 구성을 선언하고 있습니다. 데이터가 올바르게 표시되고 있으며 검색 대화 상자를 통해 여러 조건으로 검색 할 수 있습니다 ... 문제 없습니다.검색을 수행 할 때 jqGrid 검색 열 유형을 얻으려면 어떻게해야합니까?

문제는 문자열이 아닌 값을 검색 할 때 해당 열의 데이터 형식이 필요하다는 것입니다. 열에 'stype'옵션이있어 정확히 유형을 말하고 있지만이 구성은 검색을 수행 할 때 쿼리 문자열에 전달되지 않습니다.

json이 2 개의 검색 조건에 대한 요청을 받고 있습니다. { "groupOp": "AND", "rules": [{ "field": "EntityID", "op": "gt "data": "3"}, { "field": "EntityID", "op": "lt", "data": "8"}}}

'data'값은 다음과 같습니다. 항상 따옴표로 묶여 있지만 값은 숫자이며 해당 열은 stype이 'int'로 설정되어 있습니다 (이 방법을 사용하는 데는 아무 것도 찾을 수 없습니다)

요점은 내가 내가 요청할 때 컬럼의 타입에 관한 정보를 전달하는 방법.

어떻게 할 수 있습니까?

여기 내 그리드 선언입니다 :

$('#EntityListGrid').jqGrid({ 
     url: 'my url', 
     datatype: 'json', 
     mtype: 'GET', 
     colNames: ['ID', 'Name', 'Actions'], 
     colModel: [ 
     { name: 'EntityID', index: 'EntityID', width: 50, align: 'left', resizable: true, sortable: true, stype: 'int' }, 
     { name: 'Name', index: 'Name', width: 250, align: 'left', resizable: true, sortable: true, stype: 'string' }, 
     { name: 'act', index: 'act', width: 75, sortable: false }, 
     ], 
     pager: $('#EntityListGridPager'), 
     rowNum: 10, 
     rowList: [10, 20, 30], 
     sortname: 'EntityID', 
     sortorder: 'desc', 
     viewrecords: true, 
     imgpath: '', 
     caption: 'Entities', 
     width: EntityListGridWidth, 
     height: 400, 
     gridComplete: function() { 
      var ids = jQuery("#EntityListGrid").jqGrid('getDataIDs'); 
      var editImageUrl = 'edititem.GIF'; 
      for (var i = 0; i < ids.length; i++) { 
       var cl = ids[i]; 

       ce = "<img src='" + editImageUrl + "' onclick='EditEntity(" + cl + "); return false;' />"; 
       ce2 = "<input type='button' value='details' src='" + editImageUrl + "' onclick='EditEntity(" + cl + "); return false;' />"; 
       //jQuery("#EntityListGrid").jqGrid('setRowData', ids[i], { act: ce2 }); 
       $("#EntityListGrid").setRowData(ids[i], { act: ce2 }); 
      } 
     } 
     //}); 
    }).navGrid('#EntityListGridPager', { search: true, edit: false, add: false, del: false, searchtext: "Search" }, {}, {}, {}, { closeOnEscape: true, multipleSearch: true, closeAfterSearch: true }); 

답변

3

당신이 the documentationstype 지원에 읽을 수있는 방법 만 두 값 : "텍스트"와 "선택". stype은 검색 대화 상자에서 다른 컨트롤을 작성하는 데에만 사용됩니다.

서버에 전송되는 모든 "데이터"요소는 항상 문자열로 인코딩되며 서버는 데이터을 해당 데이터 유형으로 변환해야합니다. 예를 들어 날짜 또는 정수로 column을 사용하는 경우 서버는 데이터를 DateTime, Int32, Int64, Double 또는 다른 유형으로 변환해야합니다.

+0

감사합니다.하지만 서버가 변환 할 형식을 어떻게 알 수 있습니까? 요청 처리기가 그런 종류의 지식을 가지고 있기 때문에 일반적으로 알 수 있습니다. 그러나 제 경우에는 각 검색 값을 변환하는 유형을 알아야하는 일반 검색 메커니즘이 있습니다. 그렇지 않으면 모든 것이 문자열로 이동합니다. – AlexCode

+0

@AlexCode : '내 url'의 서버는 해당 jqGrid에 필요한 데이터를 얻을 수있는 전체 정보를 알고 있어야합니다. 내부적으로 "일반 검색 메커니즘"을 사용하는 경우 "특정"그리드 및 필요한 모든 유형을 알고있는 "특정"서버 메소드를 호출해야합니다. "특정"서버 메소드는 유형 변환을 수행하고 "일반 검색 메커니즘"을 호출 할 수 있습니다. – Oleg

+0

그래 ... 어쩌면 방법은 일반적인 검색 엔진을 호출하기 전에 처리기에 지식을 추가하는 것입니다. 감사합니다. – AlexCode