I want to add row to kendo Grid with inline edit support. I need to do it after grid is initialized and data are loaded and displayed.
When i try this in DataBound event, addRow cause DataBound event again and become never ending loop. It is posible to know when is grid ready, data loaded and displayed ? Thanks for help!
My grid code:
@(Html.Kendo().Grid<
TT.Web.Models.ViewModel.WorkViewModel
>()
.Name("gridAdd")
.Events(events => events.Edit("gridEdit").DataBound("databoundinitAdd").Save("gridAddSaveChanges"))
.Columns(columns =>
{
columns.Template(x => x.Id)
.HeaderTemplate("<
input
id
=
'mastercheckbox'
type
=
'checkbox'
/>")
.ClientTemplate("#if(Status == 0 || Status == 3) {# <
input
type
=
'checkbox'
name
=
'checkedRecords'
value
=
'#= Id #'
class
=
'checkboxGroups'
/> #} #")
.Width(30)
.HtmlAttributes(new { style = "text-align:center" })
.HeaderHtmlAttributes(new { style = "text-align:center" });
columns.Template(@<
text
></
text
>).Title("Status").ClientTemplate("#if(Status == 0) {# <
i
class
=
'fa fa-bolt icc'
></
i
> #}#" + "#if(Status == 1) {# <
i
class
=
'fa fa-paper-plane icc'
></
i
> #}#" + "#if(Status == 2) {# <
i
class
=
'fa fa-check-square-o icc'
></
i
> #}#" + "#if(Status == 3) {# <
a
class
=
'popoverEl'
data-toggle
=
'popover'
data-trigger
=
'hover'
tabindex
=
'0'
title
=
'Důvod zamítnutí'
data-content
=
'#=RejectionReason#'
><
i
class
=
'fa fa-ban icc popoverEl'
></
i
></
a
> #}#").HtmlAttributes(new { @class = "icc" });
columns.Bound(work => work.Date).EditorTemplateName("WorkDate").Title(@L("Date"));
columns.Bound(work => work.Project).ClientTemplate("#=Project.Name#").Width(250).Title(@L("ProjectNameP")); // .ClientTemplate("#=Project.Name#")
columns.Bound(work => work.Spp).ClientTemplate("#=Spp.Code#").Width(100);
columns.Bound(work => work.Operation).ClientTemplate("#=Operation.Code#").Width(100).Title(@L("TypeOfOperation"));
columns.Bound(work => work.Hours).Title(@L("Hours"));
//columns.Command(command => { command.Edit(); command.Destroy(); }).Width(172);
columns.Template(@<
text
></
text
>).ClientTemplate(
"<
div
class
=
'btn-group'
>" +
"#if(Status == 0 || Status == 3 ) {# <
a
class
=
'btn btn-success btn-sm k-button-icontext k-grid-edit'
><
i
class
=
'fa fa-pencil'
></
i
></
a
>#}#" +
"#if(Status == 0 || Status == 3 ) {# <
a
class
=
'btn btn-sm btn-primary sendToApprove'
data-href
=
'" + Url.Action("WorkToApprove", "Home") + "/#=Id#'
><
i
class
=
'fa fa-paper-plane'
></
i
></
a
>#}#"
+ "#if(Status == 0 ) {# <
a
data-href
=
'" + Url.Action("WorkDelete", "Home") + "/#=Id#'
class
=
'btn btn-sm btn-danger delete-work-item'
><
i
class
=
'fa fa-times'
></
i
></
a
>#}#"
+ "</
div
>"
).Width(130);
})
.ToolBar(toolbar =>
{
toolbar.Create().Text(@L("AddRecord"));
//toolbar.Save();
})
.Editable(editable => editable.Mode(GridEditMode.InLine))
.DataSource(dataSource => dataSource
.Ajax()
.Batch(false)
.Events(events => events.RequestEnd("OnRequestEnd_TopLinePriceGrid"))
.PageSize(20)
//.Events(events => events.Error("error_handler"))
.Model(model =>
{
model.Id(p => p.Id);
model.Field(p => p.Operation).DefaultValue(ViewData["defaultOperation"] as TT.Web.Models.ViewModel.OperationViewModel);
model.Field(p => p.Spp).DefaultValue(ViewData["defaultSpp"] as TT.Web.Models.ViewModel.SppViewModel);
model.Field(p => p.Project).DefaultValue(ViewData["defaultProject"] as TT.Web.Models.ViewModel.ProjectViewModel);
})
.Read(read => read.Action("WorkRead", "Home").Data("currentWeekInfo")) // Přidádo HTTP parametr s vybranným týdnem
.Create(update => update.Action("EditingInline_Create", "Home").Data("currentWeekInfo"))
.Update(update => update.Action("EditingInline_Update", "Home").Data("currentWeekInfo"))
.Destroy(update => update.Action("EditingInline_Destroy", "Home").Data("currentWeekInfo"))
)
.Pageable() // Enable paging
.Sortable() // Enable sorting
)
Add row code fired in DataBound event => cause never ending loop, becouse addRow cause DataBound event:
function gridAdd(){
var grid = $("#gridAdd").data("kendoGrid");
grid.addRow();
}