如何从模型填充 jqgrid
How to populate jqgrid from a Model
您好,我正在处理使用 jqgrid 的 MVC 项目。我有一个 master 网格。单击行和 edit 按钮我将进入 CreateOrEdit 视图。在该视图中还有一个网格 -Detail 网格。
在 create 的情况下:主网格的字段(labels 和相应的 EditorFor) 并且详细信息网格将是空的,一旦我们填充所有内容(标签和相应的 EditorFor 和网格)并单击保存 .. 它就被保存了.. 这么多工作就完成了。现在的问题..
在编辑时:我必须根据在主网格中选择的 ID 填充详细信息网格。
我试过类似的东西:
url:'@Url.Action("PDVs", "GetData", new { pdv = @Model.Details})'
data: JSON.stringify('@(Model.Details)')
and/or 将 url 指定为:
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" });
});
我认为 Url.Action
方法有问题,如果你想要 url 就像你写的那样,你应该翻转参数。
无论如何,如果你需要 whole model:
,我想你可以尝试在你的 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)
您好,我正在处理使用 jqgrid 的 MVC 项目。我有一个 master 网格。单击行和 edit 按钮我将进入 CreateOrEdit 视图。在该视图中还有一个网格 -Detail 网格。
在 create 的情况下:主网格的字段(labels 和相应的 EditorFor) 并且详细信息网格将是空的,一旦我们填充所有内容(标签和相应的 EditorFor 和网格)并单击保存 .. 它就被保存了.. 这么多工作就完成了。现在的问题..
在编辑时:我必须根据在主网格中选择的 ID 填充详细信息网格。
我试过类似的东西:
url:'@Url.Action("PDVs", "GetData", new { pdv = @Model.Details})'
data: JSON.stringify('@(Model.Details)')
and/or 将 url 指定为:
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" });
});
我认为 Url.Action
方法有问题,如果你想要 url 就像你写的那样,你应该翻转参数。
无论如何,如果你需要 whole model:
,我想你可以尝试在你的 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)