使用自定义编辑模板的kendo listview - 无法更改模型值

时间:2013-06-27 06:49:05

标签: kendo-ui kendo-grid

我有自定义编辑模板的剑道列表视图,

这是列表视图代码

var warrantyContact_listview = $("#warrantyContact_listview").kendoListView({
        autoBind: false,
        dataSource: dataSource,
        template: kendo.template($("#warrantyContact_listview_template").html()),
        editTemplate: kendo.template($("#warrantyContact_editview_template").html())
    }).data("kendoListView");

这是编辑模板代码

<script type="text/x-kendo-tmpl" id="warrantyContact_editview_template">
    <div id="con_editview">        
    <dd>
    <dt>Person</dt>
    <input type="text" 
    data-role = "autocomplete" 
    data-source = "some_datasource" 
    data-text-field = "fname"  
    data-value-field = "bid"
    class="k-textbox" 
    data-bind="value:some_value" 
    name="builder" 
    required = "required"
    validationMessage = "required"  
    id="builder"/>
    <span data-for="some_value" class="k-invalid-msg"></span>
    </dd><br clear="all"/>                       

    <dt>City</dt>
    <dd>
    <input type="text" class="k-textbox" data-bind="value:city" name="city" required = "required" validationMessage = "required" />
    <span data-for="city" class="k-invalid-msg"></span>
    </dd><br clear="all"/>

    <dt>State</dt>
    <dd>
    <input type="text" name = "state" class="k-textbox"  data-bind = "value:state" data-value-field="abbrev" data-text-field="abbrev" data-min-length="1" data-source="states_datasource" data-role="autocomplete" required = "required" validationMessage = "required" />
    <span data-for="state" class="k-invalid-msg"></span>
    </dd><br clear="all"/>

    <dt>Zip</dt>
    <dd>
    <input type="text" class="k-textbox" data-bind="value:zip" name="zip" required = "required" validationMessage = "required" />
    <span data-for="zip" class="k-invalid-msg"></span>
    </dd><br clear="all"/>

    </dl>
    </div>
</script>  

这是方案

当listview进入编辑模式时,我会填写第一个字段“Person”,这是一个自动完成的。

根据我为自动填充“人物”选择的值,我想将其对应的值分配给城市,州和邮政编码。我能够成功分配值。 (我在Person Auto完成的select事件中使用jquery ajax)

但是,当我拨打$("#warrantyContact_listview").data("kendoListView").save();

当我查看firebug控制台时,

那些更改的值city,state和zip没有传递到服务器端。

我在这里缺少什么?

我是否必须在此处更改模板中值的绑定?

我尝试更改参数map函数中的值,但是,它不起作用。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

我的第一个猜测是,当您更改值时,不要在dataSource中使用set() method of the ObservableObject,因此kendo dataSource不知道observable的字段已被修改。 所以在save()(它调用dataSource的sync())它没有看到任何新东西,并且它不会更新任何东西。

手动检查数据源,使用set()更改内容并使用save()查看是否已保存。