jsontelerikkendo-gridtelerik-gridtelerik-mvc

writing a script/Function for checkboxes and Custom Delete button in Telerik UI for ASP.NET MVC


I need help writing a script/Function for my Telerik UI for asp.net MVC program. I have a delete button in my tool bar and I think my script is correct for it deleting. Now, I'm told that my check boxes haft to have a script also to be deleted when checked. As a C# coder, I'm not entirely knowledgeable about Json coding. So, any help would be appreciated! Here is my code below.

@(Html.Kendo().Grid<MVCSQLDatabase.Models>()
      .Name("Grid")
      .DataSource(dataSource => dataSource
          .Ajax()
          .PageSize(10)
          .Batch(true)
          .Model(model => model.Id(p => p.Proposal_Uid))
          .Read(read => read.Action("Proposals_Read", "Grid"))
          .Create(create => create.Action("Proposals_Create", "Grid"))
          .Update(update => update.Action("Proposals_Update", "Grid"))
          .Destroy(destroy => destroy.Action("Proposals_Destroy", "Grid"))
      )
          .Resizable(resize => resize.Columns(true))

      .Columns(columns =>
      {
          columns.Select().Width(100); //<-- my check boxes code.
          columns.Bound(c => c.Prime).Width(215);
          columns.Bound(c => c.Proposal).Width(200);
          columns.Bound(c => c.C).Width(190);
          columns.Bound(c => c.Cl).Width(185);
          columns.Bound(c => c.T).Width(290);
          columns.Bound(c => c.M).Width(220);
          columns.Bound(c => c.S).Format("{0: dd/MM/yyyy}").Width(170);
          columns.Bound(c => c.E).Format("{0: dd/MM/yyyy}").Width(170);
          columns.Bound(c => c.P).Width(235);
          columns.Bound(c => c.Con).Width(215);
          columns.Command(command => { command.Destroy(); }).Width(180);// <--- My delete button in my column
      })
      .ToolBar(toolbar =>
          {
          toolbar.Create();
          toolbar.Save();
          toolbar.Excel();
          toolbar.Custom().Text("Delete").Name("batchDestroy").IconClass("k-icon k-i-close"); //<-- my custom made delete button in my toolbar.
      })
      .ColumnMenu()
      .Editable(editable => editable.Mode(GridEditMode.InCell))
      .Pageable()
      .Selectable(selectable =>
          {
          selectable.Mode(GridSelectionMode.Multiple);
          selectable.Type(GridSelectionType.Row);
      })
      .PersistSelection()
      .Filterable(filterable => filterable.Mode(GridFilterMode.Row))
      .Scrollable()
      .HtmlAttributes(new { style = "height:835px;" })

)

    <script>
        $("#grid").on("click", "batchDestroy", function() {
        var $tr = $(this).closest("tr"),
        grid = $("#grid").data("kendoGrid"),
        dataItem = grid.dataItem($tr);
        grid.dataSource.remove(dataItem);
});
    </script>

Solution

  • Here is the code for anybody else stuck in this situation. The thing that got me the most, was the .done function to end the button click function and then saving the grid AFTER the delete was made. Hopefully, this helps others!

    
     <script>
            $(document).ready(function ()
            {
                $(".k-grid-Destroy").on("click", function (e)
                {
                    e.preventDefault();
                    var grid = $("#Grid").data("kendoGrid");
                    var selectedRows = grid.select();
                    kendo.confirm(kendo.format("Are you sure you wish to delete {0} records?", selectedRows.length))
                        .done(function ()
                        {
                            $.each(selectedRows, function (i, row)
                            {
                                grid.removeRow(row);
                            })
                            grid.saveChanges();
                        });
                });
            });
        </script>