3 Stimmen

MVC WebGrid - Wie man programmatisch die aktuelle Seite, Spalte sortieren usw. erhalten

Wie kann ich programmatisch (in Javascript) erhalten die aktuelle Seitenzahl, letzte Sortierspalte und Sortierrichtung des ASP.NET MVC WebGrid?

Ist es möglich, die Argumente zu aktualisieren, bevor der Aufruf der $("#grid").load() Methode?

1voto

Tawani Punkte 10880

Die einzig mögliche Lösung war die Verwendung von jQuery zum Abrufen: - das "href"-Attribut aus der ersten Spaltenüberschrift, um die Seitenzahl zu erhalten und - das "href"-Attribut aus der "nächsten Seitennummer", um die Sortierspalte und die Sortierrichtung zu erhalten.

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X