【问题标题】:How to load the data for a jqGrid using an Id from the URL parameter如何使用 URL 参数中的 Id 为 jqGrid 加载数据
【发布时间】:2013-02-22 10:52:27
【问题描述】:

我似乎无法弄清楚如何根据 URL 中的参数中的 Id 加载 jqGrid。基本上我有地址 \Locations\Departmetn?LocationId=1 现在我想根据位置 ID 加载网格。网格只是使用地址 \Locations\GetDepartments 让控制器将数据作为 jSonResult 返回,这一切正常,我只是不知道如何/是否可以将位置 ID 发送到该 URL \Locations\GetDepartments

$(function () {

    $.widget('qs.department_page', {

    _create: function () {

        var self = this;
        this.scroll_to_end = false;

        var LocId = 1; //hardcoded for the test

        // get my child dom elements
        this.department_pager = $("#department_pager");

        // set up the grid and pager
        this.department_grid = $("#department_grid").jqGrid(
        {
            url: "/Location/GetDepartments/",
            datatype: "json",
            mtype: "POST",
            height: 300,
            hidegrid: false,
            colNames: ['Name', 'Site Num', 'Description', 'ABN'],
            colModel: [
                { name: 'Name', index: 'Name', width: 200, align: "left", sortable: false },
                { name: 'SiteNum', index: 'SiteNum', width: 100, align: "left", sortable: false },
                { name: 'Company', index: 'Company', width: 200, align: "left", sortable: false },
                { name: 'ABN', index: 'ABN', width: 200, align: "left", sortable: false }
            ],
            caption: "Departments",
            pager: this.department_pager
        })
        .navGrid('#department_pager', {
            addfunc: function () { self.onNewDepartment(); },
            editfunc: function (val) { self.onEditDepartment(val); },
            search: false,
            refresh: false
        },
            {/*add*/
            },
            {/*edit*/
            },
            { url: "/Location/DeleteDepartment" }
        );

}

【问题讨论】:

  • 您使用 HTTP POST。您真的需要将LocationId 作为 URL 的一部分发送还是 post LocationId 连同其他标准 jqGrid 参数(pagerowssidx 等)作为 HTTP 的一部分身体?

标签: c# jquery asp.net-mvc jqgrid


【解决方案1】:

下面有很多种方法,

在请求前调用并扩展 postadata。在控制器中,您将获得 LocationID 值。

 beforeRequest: function () {

                var postData = $('#department_grid').jqGrid('getGridParam', "postData");
                $.extend(postData, { LocationID: "give your location id" });
            },

希望这会解决。

【讨论】:

  • 正是我一直在尝试做的,但只是愚蠢地去做,非常感谢:)
  • @Anthony:该解决方案将发布的数据扩展到服务器,而不是像您要求的那样附加 URL。如果您需要扩展需要发布的数据,您可以使用postData: {LocationID: "give your location id"} 形式的jqGrid 的postData 参数。如果LocationID 的值不是常数,则可以使用函数作为LocationID 的值。有关详细信息,请参阅the answer
  • @Anthony:如果您需要扩展我在 beforeRequest 方法中所做的 postData,Oleg 解决方案会更好。再次感谢奥列格。他是解决 jQgrid 查询的大英雄。
【解决方案2】:

如果您考虑使用休息服务来使用 /Location/Departments/{Id} 之类的链接怎么办?

【讨论】:

    猜你喜欢
    • 2014-01-26
    • 1970-01-01
    • 1970-01-01
    • 2014-08-27
    • 1970-01-01
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多