KendoUI数据源组件

时间:2014-02-19 07:04:25

标签: javascript jquery json kendo-ui

我编写了两个函数,假设其中一个函数获取了所有通知的列表,其中一个获得了新的通知,我写了一个调用第一个方法的脚本并获取Json格式的所有通知列表,并编写另一个脚本每隔8秒调用第二种方法,并以Json格式获取新的通知。我在KendoUI数据源中显示这些通知。所以我只有一个KendoUI数据源组件有两个数据源,我想在一个数据源中添加两个数据源,有没有办法做到这一点?

编辑:这是我的代码

 <script id="template" type="text/x-kendo-template">

          <tr>

            <td>#= ID #</td>
            <td>#= TITLE #</td>
            <td>#= DESC #</td>

           </tr>
  </script>

我的第一个脚本,它会让我们列出所有通知:

       var datas = function () {

                        var objects = [];
                        $.ajax({
                            type: "POST",
                            url: "./WebForm1.aspx/GetNoti",
                            data: {},
                            async: false,
                            contentType: "application/json; charset=utf-8",
                            dataType: "json",
                            success:
                                function (response) {

                                    for (var i = 0; i < response.d.length; i++) {

                                        objects.push({ 'ID': response.d[i].ID, 'TITLE': response.d[i].TITLE, 'DESC': response.d[i].DESC });

                                    }
                                },

                        });
                        return objects;
                    };




                    var dataSource = new kendo.data.DataSource({
                        data: datas(),
                        change: function () {
                            $("#movies tbody").html(kendo.render(template, this.view()));
                        }
                    });

                   dataSource.read();

这是我的第二个脚本,它调用方法每8秒为我们提供一次新通知:

     $("#go").click(function () {
                        setInterval(
                            function () { test2();}, 8000);
                    });

        var p = function () {
                        var objects = [];
                        $.ajax({
                            type: "POST",
                            url: "./WebForm1.aspx/GetUnCheckNotification",
                            data: {},
                            async: false,
                            contentType: "application/json; charset=utf-8",
                            dataType: "json",
                            success:
                                function (response) {

                                    for (var i = 0; i < response.d.length; i++) {

                                        objects.push({ 'ID': response.d[i].ID, 'TITLE': response.d[i].TITLE, 'DESC': response.d[i].DESC });

                                    }
                                },

                        });
                        return objects;

                    };

          function test2() {

                        var dataSource2 = new kendo.data.DataSource({
                            data: p(),
                            change: function () {
                                $("#movies tbody").html(kendo.render(template, this.view()));
                            }

                        });
                        dataSource2.read();

                    }

现在我想要这样的事情:

  

dataSource = dataSource + dataSource2

     

dataSource.read();

还有吗?

2 个答案:

答案 0 :(得分:1)

JSON格式cab是一个嵌套结构。定义视图模型然后使用它。

public class Report
{
    public int Id {set; get;}
    public string Title {set; get;}
    public string Desc {set; get;}
}

public class MyReportViewModel
{
  public List<Report> NewNotifications {set;get;}
  public List<Report> AllNotifications {set;get;}
}
  • 然后使用Json.NET库(服务器端)序列化此new MyReportViewModel { ... }
  • 在客户端,您可以使用返回的JSON格式as usual

答案 1 :(得分:0)

从未尝试过这样的事情。但是当我在寻找你的答案时,我在Telerik Forums找到了这个链接。

Two Data Sources, One Grid

这可能会有所帮助。 :)