0

视图模板中带有 k-add-button 的 a href 仅适用于多次,而不适用于多次。有没有人知道为什么,或者我是一个可以正常工作的样本或解决方案?如果 k-add-button 在模板之外,它可以正常工作。

<div id="example"></div>
<script type="text/x-kendo-template" id="viewtemplate">
    <div class='k-widget'>
        <span>Filter:</span><span>#:filtertext#</span><span>Filterwert:</span><span>#:filterwert#</span>
        <a class="k-button k-edit-button" ><span class="k-icon k-edit"></span></a>
        <a class="k-button k-delete-button" ><span class="k-icon k-delete"></span></a>
        <a class="k-button k-add-button" ><span class="k-icon k-add"></span></a>            
    </div>
</script>
<script type="text/x-kendo-template" id="editTemplate">
    <div class='k-widget'>
         <input type="text" class="k-textbox" data-bind="value:filtertext" name="filtertext" required="required" validationMessage="required" />
         <span data-for="filtertext" class="k-invalid-msg"></span>
         <input type="text" class="k-textbox" data-bind="value:filterwert" name="filterwert" required="required" validationMessage="required" />
         <span data-for="filterwert" class="k-invalid-msg"></span>
         <a class="k-button k-update-button" ><span class="k-icon k-update"></span></a>
         <a class="k-button k-cancel-button" ><span class="k-icon k-cancel"></span></a>
    </div>
</script>
   <script type="text/javascript">
    $(document).ready(function () {
        var dataSource = new kendo.data.DataSource({
              data: [ { filternr: 0, filtertext: "SA-Code", filterwert:"123"} ],
              schema: {
                  model: {
                   id: "filternr",
                   fields: {
                        filternr: { type: "number" },
                        filtertext: { type: "string" },
                        filterwert: { type: "string" }
                      }
                  }
              }
        });

        var listView = $("#example").kendoListView({
            dataSource: dataSource,
            template: kendo.template($("#viewtemplate").html()),
            editTemplate: kendo.template($("#editTemplate").html()),
        }).data("kendoListView");

        $(".k-add-button").click(function(e) {
            listView.add();
            e.preventDefault();
        });       


    }); // Ende $(document).ready()
    </script>
4

1 回答 1

0

我在这个道场稍微修改了你的代码:list view template with button

希望您会注意到我所做的以下更改。

我已经向您的 listview 对象添加了一个 DataBound 事件,如下所示:

editTemplate: kendo.template($("#editTemplate").html()),
dataBound: onDataBound

然后,我将您的按钮单击事件包装在名为的适当函数中onDataBound

按钮无法正常工作的原因是,一旦您添加到数据源的数据被保存然后重新读取,模板就会重新呈现,然后从您关联的按钮中删除事件处理程序。为了重新链接它们,我们将其重新附加为 dataBound 事件的一部分,然后一切正常。

如果您需要更多信息,请告诉我。希望这个例子能说明它在做什么。

于 2015-08-27T11:27:32.940 回答