KendoListView:显示来自动态数据源

时间:2015-10-28 06:05:14

标签: knockout.js kendo-ui kendo-listview

我希望显示来自动态数据源的列表视图数据,这意味着列不是固定的,在请求之前无法确定。

示例:

  • 它可以返回列{ Id, FirstName, MiddleName, LastName }

  • 的对象列表
  • 它可以返回仅包含{ Id, LastName }列的对象列表

这可能会发生,具体取决于所做的设置。

我有一个设置来确定在查询时应该返回哪些列。 我的设置是一个列出所有包含列的数组。

  • this.includedColumns = ko.observableArray(["Id", "LastName"]);

现在在我的HTML中,

<div class="col-sm-3">
    <div id="items"></div>
    <div id="pager" class="k-pager-wrap"></div>
</div>

<script type="text/x-kendo-tmpl" id="itemTemplate">
    <div class="item" data-bind="drag: { value: $data }">

        // Here I want to display what should be displayed depending on the setup
        // If the return objects has columns { Id, FirstName, LastName }

        // and in my setup I have only { Id, LastName }
        // here I need to loop through the includedColumns list and display the columns here

       Example:

       <div data-bind="foreach: includedColumns">
          <span>#: {{theIncludedColumnHere}} #</span>
       </div>

    </div>
</script>

初​​始化,

$("#items").kendoListView({
      dataSource: myDataSource,
      pageable: true,
      virtual: true,
      template: kendo.template($("#itemTemplate").html()),
      dataBound: function () {
      }
   });

 $("#pager").kendoPager({
     dataSource: myDataSource
 });

希望有一个可能的解决方案。谢谢。

1 个答案:

答案 0 :(得分:0)

我曾经有一个类似的网格任务。也许它有助于为listview找到解决方案。 网格包含所有可能的列。根据实际数据(网格知道用户按下按钮后会有什么数据),某些列被隐藏或显示。

对于网格,您可以这样做:

grid.hideColumn("ColumnNameOrIndex");
grid.showColumn("ColumnNameOrIndex");

对于列表视图,这会更复杂,但是如果您可以在绑定时向列添加id /类(例如列名)。你应该可以使用这样的东西。

$(".myColumnType").hide();

希望它有助于找到解决方案!