4

我们的 Kendo Grid 数据源如下所示:

.DataSource(dataSource => dataSource
.Ajax()
.PageSize(10)
.Events(events => events.Error("error_handler"))
.Model(model =>
    {
     model.Id(m => m.MilestoneId);
     model.Field(m => m.ProjectName).Editable(false);
     model.Field(m => m.Name).Editable(false);
     model.Field(m => m.Status).Editable(??????);
    })

对于最后一个字段 ( Status),我们需要为Editable. 但是,我希望这个值来自我们模型上的属性值。该模型有一个名为的属性IsAvailable,我希望 bool 是那个值。

基本上我们只希望状态列IsAvailable在模型中为真时是可编辑的。

该属性的模型上的 C# 代码是:

public bool IsAvailable{ get; set; }

有谁知道访问这个值的正确语法?

我努力了:

model.Field(m => m.Status).Editable((model.Field(m => m.IsAvailable).ToString()).AsBool());

编译但不起作用;对于所有情况,它总是返回 false。

4

2 回答 2

7

使用Timothy Walter 的链接,我找到了解决问题的方法,方法是按照他的建议使用编辑事件。

这是我的代码最终的样子:

.Events(events =>
    {
        events.Edit("edit_handler");
    })
.DataSource(dataSource => dataSource
    .Ajax()
    .PageSize(10)
    .Events(events => events.Error("error_handler"))
    .Model(model =>
        {
            model.Id(m => m.MilestoneId);
            model.Field(m => m.ProjectName).Editable(false);
            model.Field(m => m.Name).Editable(false);
            model.Field(m => m.Status).Editable(true);
        })

Javascript是:

<script type="text/javascript" language="javascript">

function edit_handler(e) {

    if (!e.model.isNew()) {            
        var statusDropDown = e.container.find("input[name=Status]").data("kendoDropDownList");

        if (!e.model.IsAvailable) {
            statusDropDown.enable(false);
        }
    }
</script>
于 2013-06-19T19:13:58.173 回答
2

默认情况下启用此字段的编辑可能更容易,并附加到“编辑”事件并根据需要根据当前行的数据禁用编辑字段。

例如,查看网格上编辑事件的文档。

于 2013-06-19T01:57:39.043 回答