Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json数据未填充jqGrid_Json_Jqgrid_Asp.net Mvc 4 - Fatal编程技术网

Json数据未填充jqGrid

Json数据未填充jqGrid,json,jqgrid,asp.net-mvc-4,Json,Jqgrid,Asp.net Mvc 4,在Asp.net MVC 4中提交表单时,我的jqGrid未填充。。。我想知道为什么。。。我有一个ajax方法返回这个Json字符串,它是网络响应浏览器中的Json字符串 "{\"total\":1,\"page\":1,\"records\":1,\"rows\":[{\"cell\":[\"\",\"342352857634\",\"test\",\"test\",\"5/8/2012 11:39:38 AM\",\"1\",\"\",\"1/1/0001 12:00:00 AM\",\"1

在Asp.net MVC 4中提交表单时,我的jqGrid未填充。。。我想知道为什么。。。我有一个ajax方法返回这个Json字符串,它是网络响应浏览器中的Json字符串

"{\"total\":1,\"page\":1,\"records\":1,\"rows\":[{\"cell\":[\"\",\"342352857634\",\"test\",\"test\",\"5/8/2012 11:39:38 AM\",\"1\",\"\",\"1/1/0001 12:00:00 AM\",\"1/1/0001 12:00:00 AM\",\"1/1/0001 12:00:00 AM\"]}]}"
这就是发挥所有魔力的函数

$('#SearchPatID').submit(function (event) {
        //alert("What the motherFuck is going on here!");
        debugger;
        var theURL = this.action;
        var type = this.methd;
        event.preventDefault();
        $.ajax({
            url: this.action,
            type: this.method,
            data: $(this).serialize(),
            dataType: "json",
            success: function (result) {
                debugger;
                bindData(result);
            }
        });
        return false;
    });
    var bindData = function (result) {
    debugger;
    alert('Glad this is kind-of working!');
    $("#list").setGridParam({
        datatype: 'jsonstring',
        datastr: result,
        caption: 'Suck It!'
    }).trigger("reloadGrid");
    }
更新。。。我将bindData函数切角为setGridParam。然后重新加载。。。仍然不起作用,但我认为我终于走上了正确的道路。。。下面有更多更新…

$(document).ready(function () {
        $("#list").jqGrid({
                        shrinkToFit: false,
                        autowidth: true,
                        datatype: 'local',
                        mtype: 'POST',
                        colNames: ['Edit',
                                   'MRN',
                                   'Hospital Fin',
                                   'First Name',
                                   'Last Name',
                                   'Date of birth',
                                   'Completed Pathway',
                                   'Completed Pathway Reason',
                                   'PCP Appointment',
                                   'Specialist Appointment',
                                   'Admit Date'
                                   ],
                        colModel: [
                                   { name: 'Edit', width: 95, align: 'left' },
                                   { name: 'MRN', width: 125, align: 'left' },
                                   { name: 'Hospital_Fin', width: 145, align: 'left' },
                                   { name: 'First_Name', width: 115, align: 'left' },
                                   { name: 'Last_Name', width: 115, align: 'left' },
                                   { name: 'Date_of_birth', width: 145, align: 'left' },
                                   { name: 'Completed_Pathway', width: 125, align: 'left' },
                                   { name: 'Completed_Pathway_Reason', width: 165, align: 'left' },
                                   { name: 'PCP_Appointment', width: 115, align: 'left' },
                                   { name: 'Specialist_Appointment', width: 125, align: 'left' },
                                   { name: 'Admit_Date', width: 185, align: 'left' }],
                        rowNum: 10,
                        rowList: [5, 10, 20, 50],
                        sortname: 'Id',
                        sortorder: "desc",
                        viewrecords: true,
                        imgpath: '/Content/themes/UPMC-theme/images',
                        caption: 'My first grid'
    }); })
我错过了什么?我有我的Json数据,一切都应该很好,对吗

更新:
我意识到我发送的是一个JSON字符串,不一定是一个JSON对象。。。 所以我将数据类型从json更改为jsonstring。。。 还是不行

下面是返回JSON数据的内容更新到我现在正在尝试的内容:我想尝试将列名放入数据中。。。出于某种原因,我认为这可能会有所帮助

public static object JsonHelper(TemplateModel model){

        var values = model.Template;
        var JsonDataList = new {
            total = 1,
            page = 1,
            records = model.Template.Count,
            rows = (from val in values
                    select new {
                        cell = //new string(
                            "[\"id\" :\"" + val.EncounterId +",\""+
                            //"\"MRN\" :" + 
                            "\"MRN\" :\"" + val.MRN + ",\"" +
                            //"\"Hospital_Fin\" :" + 
                            "\"Hospital_Fin\" :\"" + val.HostpitalFinNumber + ",\"" +
                            //"\"First_Name\" :"+ 
                            "\"First_Name\" :\"" + val.FirstName + ",\"" +
                            //"\"Last_Name\" :" + 
                            "\"Last_Name\" :\"" + val.LastName + ",\"" +
                            //"\"Date_of_birth\" :" + 
                            "\"Date_of_birth\" :\"" + val.DateOfBirth.ToString() + ",\"" +
                            //"\"Completed_Pathway\" :" + 
                            "\"Completed_Pathway\" :\"" + val.CompletedPathway + ",\"" +
                            //"\"Completed_Pathway_Reason\" :" + 
                            "\"Completed_Pathway_Reason\" :\"" + val.CompletedPathwayReason + ",\"" +
                            //"\"PCP_Appointment\" :" + 
                            "\"PCP_Appointment\" :\"" + val.PCPAppointmentDateTime.ToString() + ",\"" +
                            //"\"Specialist_Appointment\" :" + 
                            "\"Specialist_Appointment\" :\"" + val.SpecialistAppointmentDateTime.ToString() + ",\"" +
                            //"\"Admit_Date\" :" + 
                            "\"Admit_Date\" :\"" + val.AdminDate.ToString() + "\"]"                            
                    })//.ToArray()
        };
        return JsonDataList;
    }
加上

return Json(DataRepository.JsonHelper(model.FirstOrDefault()), JsonRequestBehavior.AllowGet);
这就是我如何设置jqGrid…

$(document).ready(function () {
        $("#list").jqGrid({
                        shrinkToFit: false,
                        autowidth: true,
                        datatype: 'local',
                        mtype: 'POST',
                        colNames: ['Edit',
                                   'MRN',
                                   'Hospital Fin',
                                   'First Name',
                                   'Last Name',
                                   'Date of birth',
                                   'Completed Pathway',
                                   'Completed Pathway Reason',
                                   'PCP Appointment',
                                   'Specialist Appointment',
                                   'Admit Date'
                                   ],
                        colModel: [
                                   { name: 'Edit', width: 95, align: 'left' },
                                   { name: 'MRN', width: 125, align: 'left' },
                                   { name: 'Hospital_Fin', width: 145, align: 'left' },
                                   { name: 'First_Name', width: 115, align: 'left' },
                                   { name: 'Last_Name', width: 115, align: 'left' },
                                   { name: 'Date_of_birth', width: 145, align: 'left' },
                                   { name: 'Completed_Pathway', width: 125, align: 'left' },
                                   { name: 'Completed_Pathway_Reason', width: 165, align: 'left' },
                                   { name: 'PCP_Appointment', width: 115, align: 'left' },
                                   { name: 'Specialist_Appointment', width: 125, align: 'left' },
                                   { name: 'Admit_Date', width: 185, align: 'left' }],
                        rowNum: 10,
                        rowList: [5, 10, 20, 50],
                        sortname: 'Id',
                        sortorder: "desc",
                        viewrecords: true,
                        imgpath: '/Content/themes/UPMC-theme/images',
                        caption: 'My first grid'
    }); })
我在网上的某个地方读到,将数据类型设置为“local”,然后执行setGridParam和trigger(“reload”)会有所帮助。似乎合乎逻辑。但我仍然有点不确定这将如何工作。。。仍然没有工作,但我给它的老大学尝试

UDPATE:进一步解释 我的JsonHelper只是试图写出一个有效的JsonString。。。有没有人能举个例子说明他们是如何经常这样做的?每当我使用标准Json ActionHelper时。。。我想我可以创建一个不同的对象返回值,但这意味着我将不得不处理更多的linq。。。这是另一天的冒险

**更新2:月份已过去“ 你好。我已经被另一个项目分散了大约一个月的注意力。现在它开始停止了,这个代码又开始让我烦恼了。我感觉我离得很近,但到目前为止

无论如何,这里有一个空jqGrid的例子,我正在谈论。。。
正如你所看到的,我有两行数据,但没有一行,有任何一行数据通常应该是

以下是调试模式下数据的外观

["id" :"2005,""MRN" :"840108105,""Hospital_Fin" :"999999999999985,""First_Name" :"BETTY,""Last_Name" :"WHITE,""Date_of_birth" :"1/18/1951 12:00:00 AM,""Completed_Pathway" :",""Completed_Pathway_Reason" :",""PCP_Appointment" :"6/12/2012 12:00:00 AM,""Specialist_Appointment" :"6/12/2012 12:00:00 AM,""Admit_Date" :"7/5/2012 12:00:00 AM"]
["id" :"2025,""MRN" :"840108105,""Hospital_Fin" :"789654123000123,""First_Name" :"BETTY,""Last_Name" :"WHITE,""Date_of_birth" :"1/18/1951 12:00:00 AM,""Completed_Pathway" :",""Completed_Pathway_Reason" :",""PCP_Appointment" :"1/1/0001 12:00:00 AM,""Specialist_Appointment" :"1/1/0001 12:00:00 AM,""Admit_Date" :"7/6/2012 12:00:00 AM"]
这直接来自我的JSON助手…它基本上从我得到的模型中创建了两个字符串对象。。。 这就是绑定期间客户端上JSON数据的外观

{"total":1,"page":1,"records":2,"rows":[{"cell":"[\"id\" :\"2005,\"\"MRN\" :\"840108105,\"\"Hospital_Fin\" :\"999999999999985,\"\"First_Name\" :\"BETTY,\"\"Last_Name\" :\"WHITE,\"\"Date_of_birth\" :\"1/18/1951 12:00:00 AM,\"\"Completed_Pathway\" :\",\"\"Completed_Pathway_Reason\" :\",\"\"PCP_Appointment\" :\"6/12/2012 12:00:00 AM,\"\"Specialist_Appointment\" :\"6/12/2012 12:00:00 AM,\"\"Admit_Date\" :\"7/5/2012 12:00:00 AM\"]"},{"cell":"[\"id\" :\"2025,\"\"MRN\" :\"840108105,\"\"Hospital_Fin\" :\"789654123000123,\"\"First_Name\" :\"BETTY,\"\"Last_Name\" :\"WHITE,\"\"Date_of_birth\" :\"1/18/1951 12:00:00 AM,\"\"Completed_Pathway\" :\",\"\"Completed_Pathway_Reason\" :\",\"\"PCP_Appointment\" :\"1/1/0001 12:00:00 AM,\"\"Specialist_Appointment\" :\"1/1/0001 12:00:00 AM,\"\"Admit_Date\" :\"7/6/2012 12:00:00 AM\"]"}]}

仅仅看一下我的数据,它似乎有点混乱。我将尝试看看修复它是否会使它看起来更好。但是如果您有任何其他建议,我将非常感谢。

我想您使用的服务器代码中存在严重问题。如果您使用
$。ajax
请求参数
数据类型:“json“
然后
$。ajax
将数据转换为对象。服务器的响应似乎是将返回的对象转换为JSON两次

我假设您首先使用
JavaScriptSerializer
DataContractJsonSerializer
手动将具有
total
page
records
rows
属性的对象转换为JSON,然后使用
return JSON(myJsonString)返回结果字符串。因此,
JSON
字符串将被额外编码

此外,如果要将数据用作
datastr:result
,则必须使用
datatype:'jsonstring'
而不是
datatype:'json'
,后者需要
url
参数

告诉信任方您的代码还有其他问题<代码>$(“#列表”).jqGrid({…})
元素创建网格,代码只能执行一次。编写当前代码是为了在每次表单提交时可以多次调用函数
bindData

此外,您还可以使用
gridview:false
,这会降低性能(您应该始终使用
gridview:true
)。多年以来,jGrid中不存在选项
imgpath
。我想您得到了一些非常非常古老的jqGrid使用示例,并试图根据您的目的对其进行修改

我建议您从或作为起点,获取一些更近期的示例。您最好直接使用
数据类型:“json”
,并向服务器发送其他参数,例如,如所述,或者使用
$。serializeArray
(请参阅)

已更新没有JSON对象。要么你只有一个对象,要么你有一个字符串,可以代表一个编码的对象

您不需要使用任何
JsonHelper
。MVC操作应该只返回
Json(对象)
like

return new {
        total = 1,
        page = 1,
        records = model.Template.Count,
        rows = ...
})

此外,还描述了jqGrid的JSON数据的默认格式。您在
JsonHelper
中发布的代码包含

rows = (from val in values
        select new {
            invdata = new string[]{ ...}
        }).ToArray()

并将
生成为不带
id
属性且具有
invdata
属性而不是
单元格
的对象数组。要读取数据,您至少需要包含
jsonReader:{cell:“invdata”}
。最好返回具有
id
的正确数据。如果列表中的某些行可以被解释为行的唯一id,那么可以在相应的列中包含
key:true
,使用
jsonReader:{cell:}
并将
填充为
列表
或将哪些元素填充为数组或字符串的数组。

我认为您缺少eval

  success: function (result) {
            debugger;
            var data = eval("(" + result.d + ")");
            bindData(data);
        }

您应该发布一些返回JSON响应的MVC操作的代码片段。你是说使用jsonstring作为数据类型只能加载一次数据吗?@DmainEvent:我想说最好的方法是使用
datatype:“json”
,并允许jqGrid从服务器获取日期。到