jq网格导航按钮触发的帖子方法



jqGrid

$(document).ready(function () {
    $("#grid").jqGrid({
        url: '@Url.Action("GetAllAuthors", "Admin")',
        datatype: "json",
        mtype: 'get',
        colNames: ['Yazar Adı', 'Öz Geçmiş'],
        colModel: [
                  { name: 'Name', index: 'Name', editable: false },
                  { name: 'Description', index: 'Description', editable: false }
        ],
        jsonReader: {
            repeatitems: false,
            id: "sno",
            root: "rows", //array containing actual data
            page: "page", //current page
            total: "total", //total pages for the query
            records: "records", //total number of records
            repeatitems: false
        },
        rowNum: 10,
        rowList: [10, 20, 30, 40, 50],
        pager: jQuery('#gridpager'),
        sortname: 'Name',
        viewrecords: true,
        sortorder: "asc",
        width: 710,
        height: 300
    })
    .navGrid('#gridpager', { edit: false, add: false, del: false, search: false, refresh: false })
    .navButtonAdd('#gridpager', {
        caption: "Düzenle",
        buttonicon: "ui-icon-pencil",
        onClickButton: function () {
            var grid = $("#grid");
            var rowid = grid.jqGrid('getGridParam', 'selrow');
            //alert(rowid + " - " + grid.jqGrid('getCell', rowid, 'CustomerName') + " - Link: " + $("#customers_grid_table a.customer_details").attr("href"));
            window.location = '@Url.Action("EditAuthor", "Admin")?authorId=' + rowid;
            //LoadAction('@Url.Action("EditAuthor", "Admin")?authorId=' + rowid);
        }
    });  //end jqgrid
});

我的控制器中有两种方法

获取方法

[HttpGet]
public ActionResult EditAuthor(int authorId)

发布方法

[HttpPost]
public ActionResult EditAuthor(AuthorViewModel model, HttpPostedFileBase file)

我选择了一行并单击编辑按钮,我希望触发 get 方法,但 post 方法被触发。我能做些什么来触发获取方法?

谢谢。

如果将新值设置为 window.location则将使用 HTTP GET。要生成HTTP POST,您可以使用$.ajax或提交一些表单。例如,您可以动态构建不可见<form>并提交它。例如

onClickButton: function () {
    var rowid = $(this).jqGrid("getGridParam", "selrow"),
        myForm = document.createElement("form"),
        param1 = document.createElement("input");
    myForm.action = '@Url.Action("EditAuthor", "Admin")';
    myForm.method = "POST";
    myForm.style.display="none";
    param1.name = "authorId";
    param1.type = "text";
    param1.value = rowid;
    myForm.appendChild(param1);
    document.body.appendChild(myForm);
    myForm.submit();
    document.body.removeChild(myForm);
}

我建议您另外包括是否选择了某些行(是否rowid为空)的其他验证。

此外,我推荐你

  • 在网格中使用始终gridview: true选项,这只会提高网格的性能。
  • 将选项pager: jQuery('#gridpager')替换为pager: '#gridpager'
  • 将"jsonReader"选项的当前值替换为jsonReader: {repeatitems: false, id: "sno"} 。您指定的选项将与默认值组合(请参阅文档)。此外,jsonReader选项的当前值包含语法错误,因为您指定了两次相同的属性repeatitems: false

最新更新