【问题标题】:MVC WebGrid - How to programatically get the current page, sort column etcMVC WebGrid - 如何以编程方式获取当前页面、排序列等
【发布时间】:2011-07-17 17:03:35
【问题描述】:

如何以编程方式(在 javascript 中)获取 ASP.NET MVC WebGrid 的当前页码、最后一个排序列和排序方向?

是否可以在调用$("#grid").load() 方法之前更新参数?

【问题讨论】:

    标签: asp.net-mvc-3 webgrid


    【解决方案1】:

    唯一可能的解决方案是使用 jQuery 来检索: - 来自第一列标题的“href”属性以获取页码和 - “下一页号”中的“href”属性,用于获取排序列和排序方向。

    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]);
    }
    

    【讨论】:

      猜你喜欢
      • 2011-03-16
      • 2014-07-23
      • 1970-01-01
      • 1970-01-01
      • 2011-01-31
      • 2015-05-12
      • 1970-01-01
      • 2017-07-28
      相关资源
      最近更新 更多