This is a migrated thread and some comments may be shown as answers.

Bind edit template to enum type, save int value

2 Answers 380 Views
This is a migrated thread and some comments may be shown as answers.
Top achievements
Rank 1
Steve asked on 08 Mar 2018, 03:23 PM

First off, I am very new to MVC, so apologies in advance.

I don't know what I'm missing, but I have an enum type:

 public enum ClientStatus
        Unknown = 0,
        Normal = 1,
        [Description("Legal Hold")]
        LegalHold = 200

There is a database field which holds the integer value corresponding to the enum type.  For my grid, I have:

                    .Columns(columns =>
                        columns.Bound(o => o.dsl_client_id).Title("Client ID").EditorTemplateName("#dsl_client_id#");
                        columns.Bound(o => o.dsl_client_name).Title("Client Name");
                        columns.Bound(o => o.dsl_client_description).Title("Description");
                        columns.Bound(o => o.dsl_client_status).Title("Status").ClientTemplate("#=status_name#").EditorTemplateName("ClientStatus");
                        columns.Command(cmd => cmd.Destroy());
                    .ToolBar(toolbar =>
                    .Editable(editable => editable.Mode(GridEditMode.InCell))
                    .DataSource(dataSource => dataSource
                        .Model(model =>
                            model.Id(p => p.dsl_client_id);
                            model.Field(p => p.dsl_client_id).Editable(false);
                        .Events(events => events.Error("dsr_error_handler"))
                        .Read("Editing_Read", "Client")
                        .Create("Editing_Create", "Client")
                        .Update("Editing_Update", "Client")
                        .Destroy("Editing_Destroy", "Client")


The item in question here is the column for dsl_client_status, which is defined as a byte? type in the Entity Framework definitions.

I also have a dropdown definition in Shared/EditorTemplates:

@(Html.Kendo().DropDownListFor(m => m)
   .OptionLabel("Select Status")


I have been through a lot of iterations of different things, this is just the state things are in at the moment.

When I click on the cell to edit, I do get the dropdown list, but it is defaulted to the "Select Status", as if there is no value assigned.  I can then change the dropdown value, but the database value never gets updated.  If I click on it again, the value I changed to shows on the dropdown.

For example:

initial value is "Unknown".  
I click to edit, the dropdown list defaults to "Select Status".  
I change to "Normal" and click Save Changes. Text still shows as "Unknown".  
I click to edit again and the dropdown is defaulted to "Normal"

I've been scouring forums and blogs for days, trying all manner of suggestions, all to no avail.  I find it hard to believe that this is that difficult a task to achieve, so I gotta think I'm missing something simple here.

2 Answers, 1 is accepted

Sort by
Top achievements
Rank 1
answered on 08 Mar 2018, 06:51 PM
Quick followup: I changed the name of the editortemplate file to "dsl_client_status.cshtml".  That seems to have done the trick.
Telerik team
answered on 12 Mar 2018, 12:43 PM
Hello Steve,

The recommended approach to achieve the desired behavior is to utilize the UIHint annotation in the model in order to specify the editor template:
public class CustomerViewModel
  public int CustomerID{ get; set; }
  public CustomerStatus Status { get; set; }

Then, the DropDownList in the editor template (StatusEditor.cshtml under Views/Shared/EditorTemplates) should be bound as follows:
  .Name("Status") // The name of the widget should be the same as the name of the property.

For more detailed information on templating with Telerik UI for ASP.NET MVC, please refer to the following Editor Templates Documentation.

Progress Telerik
Try our brand new, jQuery-free Angular components built from ground-up which deliver the business app essential building blocks - a grid component, data visualization (charts) and form elements.
Asked by
Top achievements
Rank 1
Answers by
Top achievements
Rank 1
Telerik team
Share this question