剑道UI网格不显示JSON数据 [英] Kendo UI Grid not showing JSON data

查看:176
本文介绍了剑道UI网格不显示JSON数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我面临这个问题相当长一段时间现在,我无法绑定了我的控制器动作传递给剑道UI电网JSON数据的问题,有前几年的JavaScript问题,但现在他们都走了,但仍然是我的格没有显示任何结果:

模式

 公共对象调用getResult(字符串ID)
    {
        VAR sqlCom =新的SqlCommand(选择[否],[说明],[日期],[高度],[最后] FROM [cr_form],其中[UID] = @ ID;sqlConn);
        sqlCom.Parameters.AddWithValue(@ ID,身份证);        StringBuilder的SB =新的StringBuilder();
        StringWriter的SW =新的StringWriter(某人);
        JsonWriter jsonWriter =新JsonTextWriter(SW);
        VAR rcrds = GETSQLRESULTS(sqlCom);        尝试
        {
            INT I = 0;
            如果(rcrds!= NULL || rcrds.HasRows)
            {
                //jsonWriter.WriteStartObject();
                而(rcrds.Read())
                {
                    jsonWriter.WriteStartObject(); //改变
                    对于(INT J = 0; J< rcrds.FieldCount; J ++)
                    {
                        jsonWriter.WritePropertyName(rcrds.GetName(J)); //列名
                        jsonWriter.WriteValue(rcrds.GetValue(J)); //在列值
                    }
                    我++;
                    jsonWriter.WriteEndObject(); //改变
                }
                //jsonWriter.WriteEndObject();            }        }        赶上(例外前){}
        返回jsonWriter;
    }

控制器

 公众的ActionResult GetRecords()
    {
        VAR usrObj =新用户();
        VAR jsnRslt = usrObj.GetResult(会话[ID]的ToString());
    //到这里jsnRslt包含此字符串: {\"No\":null,\"Desc\":\"asfasfasfasfasfasfasfasfasfasfasfasf\",\"Date\":\"2013-03-27T00:00:00\",\"Height\":0,\"Final\":null,\"No\":null,\"Desc\":\"etwetwetwetwet\",\"Date\":\"2013-03-27T00:00:00\",\"Height\":0,\"Final\":0,\"No\":null,\"Desc\":\"asfasfasfskfjklajsfkjasklfjklasjfklajsfkljaklsfjklasjfkljasfkljlasf\",\"Date\":\"2013-03-27T00:00:00\",\"Height\":0,\"Final\":0,\"No\":null,\"Desc\":\"askjfkajsfklaskjfkajsfklaskjfkajsfklaskjfkajsfklaskjfkajsfklaskjfkajsfklaskjfkajsfklaskjfkajsfklaskjfkajsfklaskjfkajsfklaskjfkajsfklaskjfkajsfkl\",\"Date\":\"2013-03-27T00:00:00\",\"Height\":0,\"Final\":0,\"No\":null,\"Desc\":\"safasfasfasfasfasf\",\"Date\":\"2013-03-27T00:00:00\",\"Height\":0,\"Final\":0,\"No\":null,\"Desc\":\"asfasf\",\"Date\":\"2013-03-27T00:00:00\",\"Height\":0,\"Final\":0,\"No\":null,\"Desc\":\"asfasfasf\",\"Date\":\"2013-03-27T00:00:00\",\"Height\":2,\"Final\":0}    //经过我得到它所需的阵列格式模型的变化:
    //{\"No\":null,\"Desc\":\"asfasfasfasfasfasfasfasfasfasfasfasf\",\"Date\":\"2013-03-27T00:00:00\",\"Height\":0,\"Final\":null}
    // {否:空,说明:etwetwetwetwet,日期:2013-03-27T00:00:00,高度:0,最终:0}
    // {否:空,德...        返回JSON(jsnRslt,JsonRequestBehavior.AllowGet);
    }

查看


    

 < D​​IV>
    <脚本类型=文/ JavaScript的>
        $(文件)。就绪(函数(){
            $(#电网)。kendoGrid({
                数据源: {
                    类型:JSON
                    serverPaging:真实,
                    每页:5,
                    groupable:真实,
                    可选:行,
                    交通:{阅读:{URL:记录,数据类型:JSON}}
                },
                高度:400,
                滚动:真实,
                排序:真实,
                过滤:真实,
                分页:真实,
                列: [
                        {场:否,标题:否},
                        {场:说明,标题:说明},
                        {场:日期,标题:日期},
                        {场:高度,标题:高度},
                        {现场:最终,标题:最终}
                    ]
                数据绑定:功能(){
                    this.expandRow(this.tbody.find(tr.k主行)第一());
                }
            });
        });
    < / SCRIPT>
< / DIV>

但毕竟这一切我可以看到的是一个空的网格。在JavaScript控制台并没有错误。

请帮忙


解决方案

这是从服务器返回的JSON应该是数组。您目前似乎你正在返回多个字段都是相同的单个对象。

下面是一个例子的JSON应该怎么是这样的:

<$p$p><$c$c>[{\"No\":null,\"Desc\":\"asfasfasfasfasfasfasfasfasfasfasfasf\",\"Date\":\"2013-03-27T00:00:00\",\"Height\":0,\"Final\":null},
{否:空,说明:etwetwetwetwet,日期:2013-03-27T00:00:00,高度:0,最终:0},
{\"No\":null,\"Desc\":\"asfasfasfskfjklajsfkjasklfjklasjfklajsfkljaklsfjklasjfkljasfkljlasf\",\"Date\":\"2013-03-27T00:00:00\",\"Height\":0,\"Final\":0}]

I am facing this problem for quite a while now with the problem that I am unable to bind JSON data that my controller action is passing to the kendo UI Grid, there were few JavaScript issues before but now they are gone but still my grid is not showing any results:

In Model:

public object GetResult(string id)
    {
        var sqlCom = new SqlCommand("SELECT [No],[Desc],[Date],[Height],[Final] FROM [cr_form] WHERE [uId]=@id;", sqlConn);
        sqlCom.Parameters.AddWithValue("@id", id);

        StringBuilder sb = new StringBuilder();
        StringWriter sw = new StringWriter(sb);
        JsonWriter jsonWriter = new JsonTextWriter(sw);
        var rcrds = GETSQLRESULTS(sqlCom);

        try
        {
            int i = 0;
            if (rcrds != null || rcrds.HasRows)
            {
                //jsonWriter.WriteStartObject();
                while (rcrds.Read())
                {
                    jsonWriter.WriteStartObject(); //Changed
                    for (int j = 0; j < rcrds.FieldCount; j++)
                    {
                        jsonWriter.WritePropertyName(rcrds.GetName(j)); // column name
                        jsonWriter.WriteValue(rcrds.GetValue(j)); // value in column
                    }
                    i++;
                    jsonWriter.WriteEndObject(); //Changed
                }
                //jsonWriter.WriteEndObject();

            }

        }

        catch (Exception ex) { }
        return jsonWriter;
    }

In Controller:

    public ActionResult GetRecords()
    {
        var usrObj = new User();
        var jsnRslt = usrObj.GetResult(Session["Id"].ToString());
    //Till here jsnRslt contains this string: "{"No":null,"Desc":"asfasfasfasfasfasfasfasfasfasfasfasf","Date":"2013-03-27T00:00:00","Height":0,"Final":null,"No":null,"Desc":"etwetwetwetwet","Date":"2013-03-27T00:00:00","Height":0,"Final":0,"No":null,"Desc":"asfasfasfskfjklajsfkjasklfjklasjfklajsfkljaklsfjklasjfkljasfkljlasf","Date":"2013-03-27T00:00:00","Height":0,"Final":0,"No":null,"Desc":"askjfkajsfklaskjfkajsfklaskjfkajsfklaskjfkajsfklaskjfkajsfklaskjfkajsfklaskjfkajsfklaskjfkajsfklaskjfkajsfklaskjfkajsfklaskjfkajsfklaskjfkajsfkl","Date":"2013-03-27T00:00:00","Height":0,"Final":0,"No":null,"Desc":"safasfasfasfasfasf","Date":"2013-03-27T00:00:00","Height":0,"Final":0,"No":null,"Desc":"asfasf","Date":"2013-03-27T00:00:00","Height":0,"Final":0,"No":null,"Desc":"asfasfasf","Date":"2013-03-27T00:00:00","Height":2,"Final":0}"

    //After Changes in the Model I am getting it in the required Array format:
    //{"No":null,"Desc":"asfasfasfasfasfasfasfasfasfasfasfasf","Date":"2013-03-27T00:00:00","Height":0,"Final":null}
    //{"No":null,"Desc":"etwetwetwetwet","Date":"2013-03-27T00:00:00","Height":0,"Final":0}
    //{"No":null,"Des...

        return Json(jsnRslt, JsonRequestBehavior.AllowGet);            
    }

In View:

<div>
    <script type="text/javascript">
        $(document).ready(function () {
            $("#grid").kendoGrid({
                dataSource: {
                    type: "json",
                    serverPaging: true,
                    pageSize: 5,
                    groupable: true,
                    selectable: "row",
                    transport: { read: { url: "Records", dataType: "json"} }
                },
                height: 400,
                scrollable: true,
                sortable: true,
                filterable: true,
                pageable: true,
                columns: [
                        { field: "No", title: " No" },
                        { field: "Desc", title: "Description" },
                        { field: "Date", title: "Date" },
                        { field: "Height", title: "Height" },
                        { field: "Final", title: "Final" }
                    ],
                dataBound: function () {
                    this.expandRow(this.tbody.find("tr.k-master-row").first());
                }
            });
        });
    </script>
</div>

But after all this all I can see is an empty grid. And no errors in JavaScript console.

Please help

解决方案

The JSON that you return from the server should be array. You currently it seems that you are returning single objects with multiple fields that are the same.

Here is an example how the JSON should look like:

[{"No":null,"Desc":"asfasfasfasfasfasfasfasfasfasfasfasf","Date":"2013-03-27T00:00:00","Height":0,"Final":null},
{"No":null,"Desc":"etwetwetwetwet","Date":"2013-03-27T00:00:00","Height":0,"Final":0},
{"No":null,"Desc":"asfasfasfskfjklajsfkjasklfjklasjfklajsfkljaklsfjklasjfkljasfkljlasf","Date":"2013-03-27T00:00:00","Height":0,"Final":0}]

这篇关于剑道UI网格不显示JSON数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆