0

我有一个绑定到数据源的 Kendo UI 列表视图。有一个模型类,其中包含 {Id、Name、Description、IsActive 等字段)。我遵循了 Kendo UI Listview 演示并添加了编辑和删除图标以及相应的控制器。在编辑模板上,我只指定了名称字段,但是当我单击编辑时,我得到了模型上所有字段的文本框或其他控件。有没有办法指定要编辑的字段?

非常感谢您的帮助。

4

2 回答 2

1

您需要做两件事,一件是功能上的要求,另一件是从用户体验的角度要求的。

  1. 确保在您的模型中将字段定义为不可编辑
  2. 在您的模板中,不要将该字段显示为可编辑输入。

如果您从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>

在此处运行示例http://jsfiddle.net/OnaBai/qh7SD/

于 2013-07-25T23:47:05.453 回答
0

我对 KendoUI 了解不多,但我怀疑它会尊重数据注释。将类似的代码添加到您的视图模型中:

[MetadataType(typeof(YourModelValidation))]
public partial class YourModel
{
}

public class YourModelValidation 
{
    [ScaffoldColumn(false)]
    public int Id { get; set; }
}

这将防止它自动脚手架到发生此类事件的屏幕。很想知道它是否适用于剑道,所以请回复。

于 2013-07-25T20:47:40.043 回答