您正在使用 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" });
});
答案 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)