4

KendoUI Web を使用しており、クリックして Kendo Grid を表示したときに Kendo ListView 内のリンクが必要です。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"},
                ]
    });

}});
4

1 に答える 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();

     }});
于 2012-09-14T17:13:28.767 に答える