1

J'ai une grille avec l'une des colonnes a un EditorTemplate avec une liste déroulante.Activer ou désactiver EditorTemplateName sur une colonne dans une grille d'interface utilisateur de kendo basée sur la valeur de la colonne

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

modèle

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

ce que je veux y parvenir est lorsque le TypeId est 3 Je ne veux pas les modèles de l'éditeur à utiliser. Je veux juste montrer le "-" avec l'état désactivé.

Je pourrais faire la désactivation de la liste déroulante avec l'événement onedit mais je ne veux pas que la liste déroulante s'affiche même dans un état désactivé.

toute idée sera appréciée.

Ce que je l'ai fait pour désactiver les modèles comme ci-dessous:

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); 
      } 
     } 
    } 

J'ai essayé beaucoup de choses à enlever la dropdownlist de la colonne. Je suis nouveau à l'UI Kendo alors s'il vous plaît aidez-moi.

Merci

+0

J'ai réussi à faire un travail autour pour le moment comme ci-dessous. De cette manière, aucune liste déroulante n'est affichée lorsque nous modifions. $ ('# TypeId'). Parent() [0] .innerText = "-"; select.enable (false); –

Répondre

0

Vous pouvez modifier votre modèle comme ci-dessous

@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"}) 
} 
+0

J'aime le concept. mais puisque c'est le modèle de l'éditeur, la valeur de Model = 0 est toujours. J'ai besoin que cette logique se déclenche seulement quand ils essayent d'éditer. –

Questions connexes