我正在使用一个自定义模板的剑道时间表。
...
.Editable(editable => { editable.TemplateName("_CustomTemplate"); }))
...
模板 ...
<div class="k-edit-label">
@(Html.LabelFor(model => model.Title))
</div>
<div data-container-for="title" class="k-edit-field">
@(Html.TextAreaFor(model => model.Title, new { @class = "k-textbox", data_bind = "value:title" }))
</div>
...
任何操作model.Title
字段的方法都失败了。在每个js
绑定一个值之后,它不再被发送到服务器。字段值保持为空或甚至不显示。我想说,为了让这个工作,我尝试了几乎所有我能找到的关于这个主题的东西,但我失败了。另外,添加一个新的<input>
或甚至在模型中创建一个额外的字段并修改它也不起作用。
似乎是不可能设置任何输入值每js,将实际发送到服务器,而不仅仅是在视图中显示。至少不能这样做:
$('#Title').attr('value', data);
or
$('#Title').val(data);
因为我不相信这是一个普遍的问题,我怀疑剑道时间表/模板在这里涉及。
如果你想知道为什么我要在第一个地方操作输入字段的值,事情是这样的:
我想使用自定义模板创建的时间表对应于一个事件。我想将日程表的默认值title设置为存储在event中的字段的值。由于调度模型和事件模型之间没有任何连接,因此我只能在调度模型被建立之后获得这个值。我认为我可以简单地从ajax
请求所需的值并更新<input>
,但我错了…
Kendo UI编辑表单通常依赖于编辑文本框来触发change
事件以更新底层模型(数据项)。
如果您通过编程操作值,则手动触发change
事件。
$("#Title").val(data).trigger("change");
另一方面,以编程方式更改模型值的正确方法是通过Kendo UI model的set
方法。在打开编辑表单的场景中,您可以在Scheduler的edit
事件中获得作为e.event
的模型(事件)。
e.event.set("title", data);