如何动态创建KendoUI ListView。我的意思是我想创建div,dataSource,模板并动态添加,编辑和删除功能。我怎么能用kendoui做到这一点。
我已将模板定义为
<script type="text/x-kendo-tmpl" id="template">
<div class="products">
<ul><li>
# for (var i = 0; i < data.length; i++) { #
#= data[i] #
# } #
</li></ul>
<div class="edit-buttons">
<a class="k-button k-button-icontext k-edit-button" href="\\#"><span class="k-icon k-edit"></span>Edit</a>
<a class="k-button k-button-icontext k-delete-button" href="\\#"><span class="k-icon k-delete"></span>Delete</a>
</div>
</div>
</script>
然后动态模板将
<script type="text/x-kendo-tmpl" id="edittemplate">
<div class="product-view">
<ul><li>
# for (var i = 0; i < data.length; i++) { #
<input type="text" data-bind="value:data[i]" name="ProductName" required="required" validationMessage="required" />
# } #
</li></ul>
<div class="edit-buttons">
<a class="k-button k-button-icontext k-update-button" href="\\#"><span class="k-icon k-edit"></span>Update</a>
<a class="k-button k-button-icontext k-cancel-button" href="\\#"><span class="k-icon k-delete"></span>Cancel</a>
</div>
</div>
</script>
然后我完成了像
这样的脚本编写var data = ["Todd", "Steve", "Burke"];
$("#dynamicdiv").kendoListView({
template: kendo.template($("#template").html()),
editable:true,
dataSource:data,
editTemplate:kendo.template($("#edittemplate").html()),
}).delegate(".k-edit-button", "click", function (e) {
alert("dtjherut");
listview.edit();
e.preventDefault();
}).delegate(".k-delete-button", "click", function (e) {
alert("clicking");
var model = dataSource.view()[$(this).closest(".tm").index()];
dataSource.remove(model);
e.preventDefault();
dataSource.sync();
}).data("kendoListView");
现在列表视图正在加载三个名称以及编辑和删除按钮。但删除和编辑按钮不起作用。我没有给出创建,删除和更新的路径。基本上我需要动态创建所有模板和数据源。 对不起,如果有任何错误。 任何帮助表示赞赏。
答案 0 :(得分:0)
似乎你做错了。在kendo UI listview的构造函数中,您必须为单个项目而不是整个列表传递模板,例如:
$("#listview").kendoListView({
dataSource: dataSource,
template: "<div>#: data #</div>"
});
更多细节可以在这里找到: http://docs.kendoui.com/getting-started/web/listview/overview#configuring-listview-behavior
此外,在此之前应该实例化dataSouce,例如:
var dataSource = new kendo.data.DataSource({data: ["Todd", "Steve", "Burke"]});
希望有助于开始。