2013-05-31 2 views
1

저는 Tablesorter을 사용하고 있으며 현재 Ajax를 사용하여 서버 쪽 페이징을 구현하고 있습니다. 첫 번째 열을 클릭하면 tablesorter에 여러 열을 정렬 지원하며, 다음과 같은 URL을 사용ASP.NET MVC의 모델 바인딩 배열

공공 JsonResult JSON (INT 페이지 INT의 크기 :

http://example.com/tablesorter/json?page=0&size=25&column[0]=1 

위 내 (tablesorter에) 컨트롤러 액션과 잘 작동합니다 , int [] column)

그러나 두 번째 열에 의해서만 정렬하면 다음과 같은 URL이 호출되어 열이 null이됩니다. 제로 인덱스 값이 누락 된 것 같아요. 어떻게 든 모델은 다른 유형을 사용하여 주어진 tablesorter에 형식을 결합하거나 내가 tablesorter에의 URL 형식을 다시 작성해야합니다 :

http://example.com/tablesorter/json?page=0&size=25&column[1]=1 

그래서 제 질문은? 여러 열을 기준으로 정렬 할 때

는 형식은 다음과 같습니다

http://example.com/tablesorter/json?page=0&size=25&column[0]=1&column[1]=1 

답변

0

당신은 당신이 원하는 그러나 아약스 URL을 수정할 수 customAjaxUrl option를 사용할 수 있습니다.

아마도 jQuery의 $.param() 함수를 사용하면 도움이 될까요?

ajaxUrl: 'http://example.com/tablesorter/json?page={page}&size={size}', 
customAjaxUrl: function(table, url) { 
    // sortList = [[1,0], [2,0]] 
    var sort = $.param({ column : table.config.sortList }); 
    // result: "column[0][]=1&column[0][]=0&column[1][]=2&column[1][]=0" 
    return url + '&' + sort; 
} 

해당 형식이 작동하지 않으면 일부 서버 측 조정이 필요할 수 있습니다. 문제가 해결되지 않으면, 내가 알고하지 않기 때문에 당신을 말할 모르겠어요

ajaxUrl: 'http://example.com/tablesorter/json?page={page}&size={size}', 
customAjaxUrl: function(table, url) { 
    var i, v, 
    c = table.config, 
    s = c.sortList; // sortList = [[1,0], [2,0]] 
    for (i = 0; i < c.columns; i++){ 
     v = 2; 
     if ($.tablesorter.isValueInArray(i, s)) { 
      $.each(s, function(j){ 
       if (s[j] && s[j][0] === i) { 
        v = s[j][1]; 
       } 
      }); 
     } 
     // 0 = ascending; 1 = descending; 2 = unsorted 
     url += '&column[' + i + ']=' + v; 
    } 
    // result: "&column[0]=2&column[1]=0&column[2]=0&column[3]=2&column[4]=2" 
    return url; 
} 

: 사용자가 정의한 모든 열을 사용해야하는 경우


,이 코드를 시도 ASP.NET & 모델 바인딩에 대한 많은 것. this answer도 확인하고 싶을 것입니다.

+0

헤이 Mottie 것 같습니다. 예, customAjaxUrl에 대한 설명서를 읽고 ASP.NET MVC의 모델 바인딩을 사용하기위한 표준 형식을 가져올 수없는 경우이를 사용하려고 생각했습니다. 나는 $ .param을 사용하여 시도했는데 두 번째 열에서만 정렬 할 때 & column [0] [] = 1 & column [0] [] = 0으로 형식을 변경하지만이 형식을 모델링하는 방법을 알아낼 수 없다. . 문제는 (제 생각 엔) 제 2 지표가 비어 있다는 것입니다. – WillyN

+0

얼마나 도움이 될지 모르겠지만 답변을 업데이트했습니다. – Mottie

0

나는 이것이 낡은 항목이라는 것을 알고 있지만, 나는 모티의 대답으로 일했고 조금 수정했다.

customAjaxUrl: function(table, url) { 
    // build sort list 
    var config = table.config; 
    var sortList = config.sortList; 

    for (var i = 0; i < config.columns; i++){ 
     var v = 2; 

     $.each(sortList, function(j, item){ 
      if (item && item[0] === i) { 
       v = item[1]; 
      } 
     }); 

     // 0 = ascending; 1 = descending; 2 = unsorted 
     url += '&sortColumn[' + i + ']=' + v; 
    } 

    // build filter list 
    var filterList = config.pager.currentFilters; 

    for (var i = 0; i < filterList.length; i++) { 
     url += '&filterColumn[' + i + ']=' + filterList[i]; 
    } 

    return url; 
}, 

내 MVC 액션 선언이

public ActionResult ListByPage(int page, int size, List<int> sortColumn, List<string> filterColumn) 
{ 
}