我有一个绑定到数据源的Kendo UI列表视图。有一个模型类,其中包含{Id,Name,Description,IsActive等字段)。我按照Kendo UI Listview演示并添加了编辑和删除图标以及相应的控制器。在edittemplate上,我只指定了Name字段,但是当我单击Edit时,我得到了Model上所有字段的文本框或其他控件。有没有办法指定要编辑的字段?
非常感谢你的帮助。
答案 0 :(得分:1)
您需要做两件事,一件是功能性请求,另一件是从UX的角度请求。
如果您修改了KendoUI web中的示例,那么您将DataSource的Schema中的Model定义为:
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" }
}
}
}
使用此功能,您可以编辑该值,但在更新时不会将其发送到服务器。但由于这不是 nice ,您应该使用更改模板来禁止更改它。
他们目前的模板:
<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>
答案 1 :(得分:0)
我对KendoUI一无所知,但我怀疑它会尊重数据注释。在此视图模型中添加类似的代码:
[MetadataType(typeof(YourModelValidation))]
public partial class YourModel
{
}
public class YourModelValidation
{
[ScaffoldColumn(false)]
public int Id { get; set; }
}
这将阻止它在发生此类事件时自动搭建屏幕。很想知道它是否适用于剑道,所以请回复。