I am using TreeList to edit hierarchical data. I have to use Custom Edit template to create/edit rows. But new row disappears after clicking on Update button in Popup window. I have to refresh page to see new rows. What am I doing wrong?
@(Html.Kendo().TreeList<Models.FlowItemModel>()
.Name("treelist")
.Toolbar(toolbar => toolbar.Create())
.Columns(columns =>
{
columns.Add().Field(e => e.FieldType).Width(200).Title("Type");
columns.Add().Field(e => e.FieldLabel);
columns.Add().Field(f => f.LineNumber).Width(100).Title("#");
columns.Add().Field(e => e.DropdownValues).Width(150).Title("DropDown");
columns.Add().Width(350).Command(c =>
{
c.CreateChild().Text("Add child");
c.Edit();
c.Destroy();
});
})
.Editable(editable => editable.Move(move => move.Reorderable(true)))
.Editable(e => e.Mode("popup").TemplateName("CustomTreeListPopup"))
.Filterable()
.Sortable()
.DataSource(dataSource => dataSource
.Create(create => create.Action("CreateFlowItem", "Configurator").Data("getConfiguration"))
.Read(read => read.Action("GetFlowItems", "Configurator").Data("getSelectedFlowItem"))
.Update(update => update.Action("UpdateFlowItem", "Configurator").Data("getConfiguration"))
.Destroy(delete => delete.Action("DeleteFlowItem", "Configurator"))
.Model(m =>
{
m.Id(f => f.Id);
m.ParentId(f => f.ParentId).Nullable(true);
m.Field(f => f.LineNumber);
m.Field(f => f.FieldLabel);
m.Field(f => f.FieldType);
})
)
.Events(events =>
{
events.DragEnd("onDragEnd");
})
)
CustomTreeListPopup:
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, Kendo.Mvc
@using Kendo.Mvc.UI
@model Web.Models.FlowItemModel
<div class="k-edit-form-container">
<h5>Flow Item</h5>
<br />
@Html.HiddenFor(model => model.Id, new { @id = "edit_Id", @Name = "edit_Id" })
@Html.HiddenFor(model => model.ParentId, new { @id = "edit_ParentId", @Name = "edit_ParentId" })
<div class="editor-label">
@Html.LabelFor(model => model.FieldLabel)
</div>
<div class="k-edit-field">
@Html.EditorFor(model => model.FieldLabel)
@Html.ValidationMessageFor(model => model.FieldLabel)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.FieldType)
</div>
<div class="k-edit-field">
@(Html.Kendo().DropDownListFor(model => model.FieldType)
.HtmlAttributes(new { style = "width:100%" })
.AutoBind(false)
.DataSource(source =>
{
source.Read(read =>
{
read.Action("GetFieldTypes", "Configurator");
});
})
)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.DropdownValues)
</div>
<div class="k-edit-field">
@Html.EditorFor(model => model.DropdownValues)
@Html.ValidationMessageFor(model => model.DropdownValues)
</div>
</div>