根据列值在kendo ui网格中的列上启用或禁用EditorTemplateName

时间:2014-09-11 00:20:35

标签: kendo-grid kendo-asp.net-mvc mvc-editor-templates editortemplates

我有一个网格,其中一列有一个带有下拉列表的EditorTemplate。

columns.Bound(i => i.TypeId).Title("Types").EditorTemplateName("Types").ClientTemplate("#: TypeId != 3 ? Type : '-'#").HtmlAttributes(new { @style = "text-align:center; " }).Width(75);

模板

@(Html.Kendo().DropDownListFor(i => i)
                .Name("TypeId")
                .DataValueField("Id")
                .DataTextField("Type")
                .BindTo((IEnumerable)ViewBag.Types)
                .OptionLabel("Select Type")
                .Value("TypeId")
)

我想要实现的目标是当TypeId为3时我不想使用编辑器模板。我只想展示" - "与残疾人状态。

我可以使用onedit事件禁用下拉列表,但我不希望下拉列表显示即使处于禁用状态。

任何想法都将受到赞赏。

我按照以下方式禁用模板:

 function disableOnEdit(e) {

        if (e.model.isNew()) {
            // Leave it editable if the row is new.
        } else {
             //Disable the editor for Element in this row.
            var select = e.container.find('input[name=TypeId]').data('kendoDropDownList');
            if (select != null && select._selectedValue == "3") {
                //var text = select.find(".k - input");
                //select.dataSource = null;
                //select._selectedValue = "-";
                //select.editTemplate = null;
                //select.innerHTML = "-";
                //select._current[0].innerText = "-";
                select.enable(false);
            } 
        }
    }

我尝试了很多东西来删除列中的下拉列表。我是Kendo UI的新手所以请帮助我。

由于

1 个答案:

答案 0 :(得分:0)

您可以更改模板,如下所示

@model Int32

@if(Model !=3){
@(Html.Kendo().DropDownListFor(i => i)
            .Name("TypeId")
            .DataValueField("Id")
            .DataTextField("Type")
            .BindTo((IEnumerable)ViewBag.Types)
            .OptionLabel("Select Type")
            .Value("TypeId"))
}else{
    @Html.TextBox("",Model,new{disabled="disabled"})
}