Kendo ui 用javascript编写剑道网格AddRow

Kendo ui 用javascript编写剑道网格AddRow,kendo-ui,kendo-grid,Kendo Ui,Kendo Grid,我想添加行到剑道网格与内联编辑支持。我需要在网格初始化并加载数据后执行此操作 我试过这个: $(document).ready(function () { gridAdd(); // no work }); function gridAdd(){ $(".k-grid-add").click() } 当我在网格中的DataBound事件中调用gridAdd()时,网格冻结和数据不会加载。执行此功能的正确事件是什么 Grid代码在gridAdd函数的代码之前:

我想添加行到剑道网格与内联编辑支持。我需要在网格初始化并加载数据后执行此操作

我试过这个:

$(document).ready(function () {

    gridAdd(); // no work

});

function gridAdd(){
     $(".k-grid-add").click()
}
当我在网格中的DataBound事件中调用
gridAdd()
时,网格冻结和数据不会加载。执行此功能的正确事件是什么

Grid代码在gridAdd函数的代码之前:

                    @(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
                )

基本上,最好的方法是获取网格客户端对象,然后使用客户端API添加行。请查看以下相关文档:


这取决于网格的初始化位置。这个调用应该在网格初始化之后完成。你能提供一些额外的代码吗?好的,我更新了我的问题。哈哈哈,超时解决了:'(不建议使用超时来解决像您这样的问题。您没有解决问题,只是延迟了呼叫。好的,这是一种不好的方式,不能正确工作,因为addRow会导致数据绑定事件。因此添加调用freez brower的行…没有帮助。我需要事件(当数据加载并可见时),我可以在其中触发addRow使用“数据绑定”事件。如我所写:当我在网格中的数据绑定事件中调用gridAdd()时,网格冻结和数据不会加载,因为gridAdd()会再次触发数据绑定事件。执行此函数的正确事件是什么?如果仅在第一次触发数据绑定事件时才需要调用addRow,则可以使用布尔标志跟踪此事件(当前栅格进入无限循环)。
setTimeout(function(){
    $(".k-grid-add").click()
})