2011-03-17 2 views
2

프로그래밍 방식으로 (자바 스크립트에서) 현재 페이지 번호, 마지막 정렬 열 및 ASP.NET MVC WebGrid의 정렬 방향을 가져올 수 있습니까?MVC WebGrid - 프로그래밍 방식으로 현재 페이지 가져 오기, 열 정렬 등

$("#grid").load() 메서드를 호출하기 전에 인수를 업데이트 할 수 있습니까? 은 "HREF"속성을 첫 번째 열 머리글에서 페이지 번호와 얻을 - - "다음 페이지 번호"에서 "HREF"속성이를 얻을 수 을 :

답변

1

유일하게 가능한 솔루션을 검색 할 jQuery를 사용하는 것이 었습니다 정렬 열 및 정렬 방향.

function reloadGrid(form) { 
    var grid = form._grid ? form._grid.value : "grid"; 
    var args = {}; 
    updateQueryParams(args, grid + " th a"); 
    args.sort = ""; 
    args.sortdir = ""; 
    updateQueryParams(args, grid + " tfoot a"); 
    args.page = 1; 

    for (var i = 0; i < form.elements.length; i++) { 
     var el = form.elements[i]; 
     if (el.type == "text" || el.type == "select" || (el.type == "radio" && el.checked)) 
      args[el.name] = el.value; 
     else if (el.type == "checkbox") 
      args[el.name] = el.checked; 
    } 

    //get controller name 
    var s = $("#grid th a")[0].onclick.toString(); 
    s = s.substring(s.indexOf("/")); 
    var controller = s.substring(0, s.indexOf("?")); 

    var queryString = ""; 
    for (var key in args) 
     queryString += "&" + key + "=" + escape(args[key]); 

    var url = controller + "?" + queryString.substring(1); 
    $("#" + grid).load(url + " #" + grid); 
} 


function updateQueryParams(args, path) { 
    var links = $("#" + path); 
    if (links.length == 0) 
     return; 

    var s = links[0].onclick.toString(); 
    s = s.substring(s.indexOf("?") + 1); 
    s = s.substring(0, s.indexOf(" #")); 

    var a = /\+/g; // Regex for replacing addition symbol with a space 
    var r = /([^&=]+)=?([^&]*)/g; 
    var d = function (s) { return decodeURIComponent(s.replace(a, " ")); }; 
    var q = s; 

    while (e = r.exec(q)) 
     args[d(e[1])] = d(e[2]); 
} 
관련 문제