如何从模型填充jqgrid

时间:2015-01-21 14:23:47

标签: asp.net-mvc jqgrid

您正在使用 jqgrid 的MVC项目。我有一个网格。点击该行并按编辑按钮即可进入CreateOrEdit视图。在该视图中,还有一个网格 - Detail 网格。

如果是 create :主网格(标签和各自 EditorFor )的字段和详细网格将为空且一次我们填充所有内容(标签和各自的 EditorFor 和网格),然后点击保存..它会被保存..这项工作已经完成。现在问题..

编辑时:我必须根据主网格中选择的ID填充详细信息网格。

我尝试过这样的事情:

url:'@Url.Action("PDVs", "GetData", new { pdv = @Model.Details})'
data: JSON.stringify('@(Model.Details)')

和/或将网址指定为:

url:'/PDVs/GetData'

Controller

public JsonResult GetData(Details details)

为了接收模型并查询它并发回JsonResult, 但模型details获取所有字段的null值。

那么有人可以告诉我如何解决这个问题吗?

更新:详情模型

using System;
using System.Collections.Generic;
using Repository.Pattern.Ef6;

namespace Abc.PROJECTS.Models
{
    public partial class PDVDuration:Entity
    {
        public int PDVDurationId { get; set; }
        public Nullable<int> PDVId { get; set; }
        public Nullable<System.DateTime> DateFrom { get; set; }
        public Nullable<System.DateTime> DateTo { get; set; }
        public string Type { get; set; }
        public string Remarks { get; set; }
       public virtual PDV PDV { get; set; }
    }
}

这是我的详细信息网格:

jQuery("#DetailsGrid").jqGrid({

           //  url: '/PDVs/GetManintenance',

            // datatype: 'json',

         @*url:'@Url.Action("PDVs", "GetData", new { pdv = @Model.PDVDurations })',*@
            mtype: 'GET',            

            //datatype: "local",
            //data: mydata,
            //data: JSON.pdv.PDVDuration,
           // data:myGridComplete('@Model.PDVDurations'),
            height: 100,
            width: 900,
            colNames: ['DateFrom', 'DateTo', 'Type', 'Remarks'],
            colModel: [
                {
                    name: 'DateFrom', index: 'DateFrom', width: 60, editable: true, sorttype: "date",
                    formatter: 'date',
                    formatoptions: {
                        srcformat: 'm/d/Y',
                        // newformat: 'd/m/Y '
                        //newformat: 'Y-m-d'
                },
                    editoptions: { dataInit: initDateEdit, size: 14 },

                },
                {
                    name: 'DateTo', index: 'DateTo', width: 80, editable: true, sorttype: "date",
                    formatter: 'date',
                    formatoptions: {
                        srcformat: 'm/d/Y',
                        //newformat: 'd/m/Y'
                    },
                    editoptions: { dataInit: initDateEdit, size: 14 },

                },


                {
                    name: 'Type', width: 80, editable: true, formatter: "select",
                    edittype: "select", editoptions: { value: "Open:Open;Maintainance:Maintainance;Closed:Closed", defaultValue: "Open" },


                },
                 {
                     name: 'Remarks', index: 'Remarks', width: 80, editable: true
                 }
                ,
            ],
            @*  data: JSON.stringify('@(Model.PDVDurations)'),*@
           // data:JSON.stringify(viewModel),
            //data:model,
            //model:viewModel,
            //data: JSON.parse(jsonData),
            pager: "#PDVMPager",
            loadonce: true,
            sortname: 'Client',
            ignoreCase: true,
            sortorder: 'asc',
            gridview: true,
            autoencode: true,
            rowNum: 10,
            rowList: [5, 10, 20, 50],
            caption: "Maintenance",
            viewrecords: true,

            editurl: "clientArray",
            gridComplete:function myGridComplete(PDV)
                {
                return JSON.stringify('@(Model.PDVDurations)')
                },


        }).jqGrid("navGrid", "#PDVMPager", {}, editSettings, addSettings, {
            multipleSearch: true,
            overlay: false,
            onClose: function () {

                $("div#ui-datepicker-div.ui-datepicker").hide();
            }
        }).jqGrid("filterToolbar", { defaultSearch: "cn" });
    });

1 个答案:

答案 0 :(得分:0)

我认为你有Url.Action方法的问题,如果你想要你写的url应该翻转params。

无论如何,如果你需要整个模型,我想你可以尝试在你的jqgrid init中这样写:

url: '@Url.Action("GetData", "PDVs")',
postData: '@Html.Raw(Json.Encode(Model))'

但如果您只需要某些字段,您可以这样写:

url: '@Url.Action("GetData", "PDVs")',
postData: 
{
   PDVDurations: @Model.PDVDurations
}

但你应该在控制器方法中写出不同的签名。像这样:

public JsonResult GetData(int PDVDurations)