Kendo UI Grid - 点击链接显示网格

4
我正在使用KendoUI Web,并希望在单击Kendo ListView中的链接时显示Kendo Grid。我正在为ListView使用模板。
HTML:
 <div id="listView" ></div>
 <div id="grid" ></div>

模板:
<script type="text/x-kendo-tmplate" id="template">
  <div>
    <ul>
          <li><a class="list k-link" title="#= title #" id="#= id#" >#= name #</a></li>
    </ul>
    </div>
</script>

我尝试使用以下代码来做这件事,但是什么都没有发生。只有id被正确读取,但请求没有被发送。
 $(" .list").live({click:function(){ 

    var id=$(this).attr('id');

    $("#grid").kendoGrid({
         dataSource: {
              transport: {
                    read: "somefile.php?id="+id,  
               },
            schema: {
                    data:"data",
                    model: {
                        id: "id_pf",
                        fields:{
                                  first:{}, 
                                   second:{}
                                }
                   }
            },
            total: function(response) {
                return $(response.data).length;
            },

           pageSize: 10
        },

        columns: [
               { title: "First", field: "first"},
               { title: "Second", field: "second"},
                ]
    });

}});

你想要Grid替换ListView,还是在Kendo窗口中打开? - John
我想要在ListView旁边放置Grid,就像主从一样。 - Anna
我建议您使用AJAX来请求服务器方法,该方法返回JSON并将其绑定到$("#grid").data("kendoGrid")._data在返回时。 - John
1个回答

3
我通过将网格的创建移出函数来解决了这个问题。 因此,首先显示没有数据的网格。
var ds=new kendo.data.DataSource({
          transport: {
                read: "somefile.php",  
           },
        schema: {
                data:"data",
                model: {
                    id: "id_pf",
                    fields:{
                              first:{}, 
                               second:{}
                            }
               }
        },
        total: function(response) {
            return $(response.data).length;
        },

       pageSize: 10
});

$("#grid").kendoGrid({
     dataSource: ds,

    columns: [
           { title: "First", field: "first"},
           { title: "Second", field: "second"},
            ]
  });

在点击链接时,数据源会重新读取更新的url,刷新并显示所需的数据。
 $(" .list").live({click:function(){ 

var id=$(this).attr('id');

    var gridUrl = "somefile.php?id="+ id;

      var grid = $("#grid").data("kendoGrid");

       grid.dataSource.transport.options.read.url =gridUrl;
       grid.dataSource.read();
       grid.dataSource.refresh();

     }});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接