2010-08-04 3 views
0

그리드를 호스팅하는 페이지에서 WebMethod를 사용하여 jqGrid를 구현하려고합니다. 기능()에있는 jqGrid에서 : 나는 dataType와 사용하는 경우이 작동 같은 페이지의 뒤에 내 코드에서jqGrid, datatype : function() 및 sord, sidx 등의 액세스

$("#mygrid").jqGrid({ 
    ... 
    datatype: function() { 
      $.ajax({ 
       url: "myPage.aspx/gridData", 
       type: "POST", 
       contentType: "application/json; char=utf-8" 
       ... 
      }); 
    } 
)}; 

을, 나는 나의 방법이 있습니다

[WebMethod()] 
public static List<MyData> gridData() { 
    return MyClass.getData(); 
} 

을 아니에요 유일한 것은 물론 페이징, 정렬 (sord, sidx 등)에 사용되는 데이터에 액세스 할 수있는 방법은 무엇입니까?

미리 감사드립니다.

답변

1

대신 표준 datatype: 'json'을 사용하는 것이 좋습니다. 당신은 또한

datatype: 'json', 
ajaxGridOptions: { contentType: 'application/json; charset=utf-8' }, 
mtype: 'GET', 

(예 : Setting the content-type of requests performed by jQuery jqGrid 참조)를 사용하고

public class jqGridTable 
{ 
    public int total { get; set; }  // total number of pages 
    public int page { get; set; }  // current zero based page number 
    public int records { get; set; } // total number of records 
    public List<jqGridRow> rows { get; set; } 
} 
public class jqGridRow 
{ 
    public string id { get; set; } 
    public List<string> cell { get; set; } 
} 

을 다음과 같이 정의 jqGridTable 클래스 인스턴스를 반환 할 필요가 아니면로부터 전송 된 데이터의 가장 컴팩트 한 양식을 사용하려는 경우 다음 서버를 클라이언트에 전달하십시오.

// jsonReader: { repeatitems : true, cell:"", id: "0" } 
public class jqGridTable { 
    public int total { get; set; }   // total number of pages 
    public int page { get; set; }   // current zero based page number 
    public int records { get; set; }  // total number of records 
    public List<List<string>> rows { get; set; }// first element of row must be id 
} 

웹 서비스 결과의 d 속성 (Jqgrid 3.7 does not show rows in internet explorer 참조)의 데이터를 디코딩 할 수 있으려면 약간 다른 jsonReader을 사용해야합니다.

는 서버 측 페이징을 지원하기 위해 및 정렬 당신은 당신의 서비스의 매개 변수 목록에

int page, int rows, string sidx, string sord 

을 추가해야합니다.

업데이트 : 기타 링크 jqgrid Page 1 of x pager에는 jqGrid와 ASMX 서비스의 실제 코드가 모두 있습니다. 다음과 같이 간단하게 사용할 수 있습니다. jsonReader :

jsonReader: { root: "d.rows", page: "d.page", total: "d.total", 
       records: "d.records", id: "d.names" } 
+0

실제로 이전 예제를 실제로 발견했습니다. 첫 번째 부분은 "ts"정의가 누락되어 작동하지 않으며 그 내용이 확실하지 않습니다. 어떤 팁? 또한 내가 실수하지 않으면 보안 때문에 json과 "get"을 사용할 수 없습니다. 게시물이 발생하면 webservice는 json에서만 응답합니다. – bugfixr

+0

아마'ts'는 http://stackoverflow.com/questions/2675625/setting-the-content-type-of-requests-performed-by-jquery-jqgrid/2678731#2678731에서 얻을 수 있습니다. jqGrid 소스 코드의 코드 조각 일뿐입니다. http://www.trirand.com/blog/?page_id=6에서 전체 소스 코드를 다운로드 할 수 있습니다. JSON과 함께 HTTP GET을 사용할 수 있습니다. 보안에 관해서는 JSON 주입을 의미합니다. 그것은 별도의 토론 주제입니다. 예를 들어 jqGrid를 사용하는 주요 프로젝트에서는 HTTP GET을 사용하고 보안 솔루션을 제공합니다. 이것을 설명하기 위해 세부 사항에 들어가야합니다. – Oleg

+0

Oleg에게 감사드립니다. 나는 잘 작동하고있는 솔루션을 얻는 중이 야. – bugfixr