我有一个绑定到数据源的 Kendo UI 列表视图。有一个模型类,其中包含 {Id、Name、Description、IsActive 等字段)。我遵循了 Kendo UI Listview 演示并添加了编辑和删除图标以及相应的控制器。在编辑模板上,我只指定了名称字段,但是当我单击编辑时,我得到了模型上所有字段的文本框或其他控件。有没有办法指定要编辑的字段?
非常感谢您的帮助。
我有一个绑定到数据源的 Kendo UI 列表视图。有一个模型类,其中包含 {Id、Name、Description、IsActive 等字段)。我遵循了 Kendo UI Listview 演示并添加了编辑和删除图标以及相应的控制器。在编辑模板上,我只指定了名称字段,但是当我单击编辑时,我得到了模型上所有字段的文本框或其他控件。有没有办法指定要编辑的字段?
非常感谢您的帮助。
您需要做两件事,一件是功能上的要求,另一件是从用户体验的角度要求的。
如果您从KendoUI web修改了示例,则 DataSource 的 Schema 中的模型定义为:
schema : {
model: {
id : "ProductID",
fields: {
ProductID : { editable: false, nullable: true },
ProductName : "ProductName",
UnitPrice : { type: "number" },
Discontinued: { type: "boolean" },
UnitsInStock: { type: "number" }
}
}
}
你希望它ProductName
变得不可编辑。然后,您必须将其更改为:
schema : {
model: {
id : "ProductID",
fields: {
ProductID : { editable: false, nullable: true },
ProductName : { type: "string", editable: false },
UnitPrice : { type: "number" },
Discontinued: { type: "boolean" },
UnitsInStock: { type: "number" }
}
}
}
有了这个,您可以编辑该值,但在您更新它时它不会被发送到服务器。但是由于这不好,您应该使用更改模板来不允许更改它。
他们当前的模板:
<dt>Product Name</dt>
<dd>
<input type="text" class="k-textbox"
data-bind="value:ProductName" name="ProductName"
required="required" validationMessage="required"/>
<span data-for="ProductName" class="k-invalid-msg"></span>
</dd>
应更改为readonly
并添加类k-state-disabled
:
<dt>Product Name</dt>
<dd>
<input type="text" readonly="readonly" class="k-textbox k-state-disabled"
data-bind="value:ProductName" name="ProductName"/>
</dd>
或直接更改input
其他内容(例如,跨度):
<dt>Product Name</dt>
<dd>
<span data-bind="html:ProductName"></span>
</dd>
我对 KendoUI 了解不多,但我怀疑它会尊重数据注释。将类似的代码添加到您的视图模型中:
[MetadataType(typeof(YourModelValidation))]
public partial class YourModel
{
}
public class YourModelValidation
{
[ScaffoldColumn(false)]
public int Id { get; set; }
}
这将防止它自动脚手架到发生此类事件的屏幕。很想知道它是否适用于剑道,所以请回复。