0

脚本:

<script type="text/javascript">
$(document).ready(function () {
    $("#grid").jqGrid({
        url: '@Url.Action("GetAllCategories", "Admin")',
        datatype: "json",
        mtype: 'GET',
        colNames: ['sno','Kategori Adı', 'Sıra No', 'Vitrin'],
        colModel: [
                { name: 'sno', index: 'sno', editable: false, hidden: true },
                  { name: 'Name', index: 'Name', editable: true },
                  { name: 'OrderNo', index: 'OrderNo', editable: true },
                  { name: 'IsShowcase', index: 'IsShowcase', width: 100, editable: true, sortable: false }
        ],
        jsonReader: {
            repeatitems: false
        },
        rowNum: 10,
        rowList: [10, 20, 30, 40, 50],
        pager: jQuery('#gridpager'),
        sortname: 'CategoryName',
        viewrecords: true,
        sortorder: "asc",
        id: "sno",
        width: 710,
        height: 300,
        editurl: '@Url.Action("_EditCategory", "Admin")'
    }).navGrid('#gridpager');
});
</script>

控制器

[HttpPost]
public ActionResult _EditCategory(CategoriesViewModel categoriesViewModel)
{
    Categories category = entity.Categories.SingleOrDefault(x => x.sno == categoriesViewModel.sno);
    category.IsShowcase = categoriesViewModel.IsShowcase;
    category.Name = categoriesViewModel.Name;
    category.OrderNo = categoriesViewModel.OrderNo;
    try
    {
        entity.Categories.Add(category);
        entity.SaveChanges();
    }
    catch (Exception ex) { }

    return PartialView(categoriesViewModel);
}

我调试了它。我不能只发布模型的 sno(sno 是模型和 uniq 的主键)。模型贴了参数,但只有sno没有贴。

我怎样才能做到这一点?谢谢。

4

1 回答 1

1

在您的代码中,我关心的第一件事是id您使用的选项 - jqGrid 没有这样的选项。如果该选项是假设让 jqGrid 从您的模型中解析行 ID,那么您应该jsonReader为此目的使用:

$("#grid").jqGrid({
    ...
    jsonReader: {
        repeatitems: false,
        id: 'sno'
    },
    ...
}).navGrid('#gridpager');

现在假设您的行 ID 已正确绑定,您可以使用prmNames选项告诉 jqGrid 它应该在sno名称下发布行 ID:

$("#grid").jqGrid({
    ...
    jsonReader: {
        repeatitems: false,
        id: 'sno'
    },
    prmNames: {
        id: 'sno'
    },
    ... 
}).navGrid('#gridpager');

这应该可以解决您的问题。

PS 很可能您的列模型(和列名称)定义中不需要sno列,因为您仅将它用于行 ID。

于 2012-12-04T09:54:40.360 回答