Я хочу добавить флажок Выбрать все, используя kendo grid в .NET MVC

#asp.net #asp.net-mvc #kendo-grid #kendo-asp.net-mvc

#asp.net #asp.net-mvc #kendo-grid #kendo-asp.net-mvc

Вопрос:

Вот код, показывающий, что я сделал. По сути, я выполнил кодирование для Select All, но оно находится за пределами Kendo grid. Что мне нужно, так это установить флажок «Выбрать все» внутри заголовка столбца, откуда я могу выполнить функцию «Выбрать все», которую я делаю сейчас, выбрав все, что находится за пределами сетки Kendo.

Это то, что мне нужно

  @{
        Layout = "~/Views/Admin/_Layout.cshtml";
        ViewBag.PageTitle = "Profile status";
        TempData.Keep("ProfileName");
        ViewBag.PageHeaderName = "Clean Profile";
    }
    <div class="card card-body dprediction mx-3">
        <div class="form-horizontal">
            <div class="accordion" id="CreateETLToolProfile">
                <div class="form-group row flex-v-center px-3 pt-2">
                    <div class="col-md-6 pt-3"> @ViewBag.ProfileName</div>
                    <div class="col-md-6" style="text-align:right">
                        <span class="pt-2">
                         Select All Tables   @Html.CheckBox("IsSelectAllTables",true,new { @OnClick = "CheckUncheckCheckBox();" , id = "IDIsSelectAllTables" })
                        </span>
                        <button class="btn btn-primary" id="btnRefresh"><i class="fa fa-refresh"></i></button>
                    </div>
                </div>
    
                <div style="padding:5px 15px;">
    
                    @(Html.Kendo().Grid<DRS.Model.DTO.CleanProfileModel>()
                       .Name("CleanProfileGrid")
                       .Columns(columns =>                                                                                                                                                       
                       {                                                                                                                                                           
                           columns.Bound(c => c.DESTINATIONTABLEID).Hidden();                                                                                                                                               
                           columns.Bound(c => c.DestinationTableName).Title("Dest Table name");                                                                                                     
                           columns.Bound(c => c.DestinationSPName).Title("Dest SP name");                                                                                                                                                                                                 
                           columns.Bound(c => c.IsToBeCleaned).ClientTemplate("<input type='checkbox' #= IsToBeCleaned ? checked='checked' :'' # class='chkbx' />").Title("Tables To Be Cleaned").Filterable(false).HeaderTemplate("<label for='check - all'>Tables To Be Cleaned  </label><input type='checkbox' #= IsToBeCleaned ? checked='checked' :'' # class='chkbx1' />");                                                                                                                                                           
                       })                                                                                                                                                              
                       .Pageable()                                                                                                                                                               
                       .Sortable()                                                                                                                                                               
                       .Resizable(r => r.Columns(true))                                                                                                                                                                 
                       .Filterable(filterable => filterable.Mode(GridFilterMode.Menu))
                       .Editable(editable =>                                                                                                                                                               
                       {
                           editable.DisplayDeleteConfirmation(false);
                       })                                                                                                                 
                       .DataSource(dataSource => dataSource
                       .Ajax()                                                                                                                                                                       
                       .Model(model =>
                       {
                           model.Id(m => m.ID);
                       })
                       .PageSize(20)                                                                                                                                                                   
                       )
                       .Events(events => events.DataBound("LoadCleanProfileGrid"))
                    )
                </div>
    
                <div class="card-body text-right pr-3">
                    @Html.ActionLink("Cancel", "ViewProfiles", "Admin", null, new { @class = "btn btn-secondary" })
    
                    <button id="btnSave" type="button" value="Save" class="btn btn-success">
                        <span class="glyphicon glyphicon-floppy-save"></span>
                        <span>Clean Profile</span>
                    </button>
                </div>
            </div>
        </div>
    </div>
    
    <script type="text/javascript">
        function LoadCleanProfileGrid() {
          //  CheckUncheckCheckBox();
        }
    
        $(document).ready(function () {
            debugger;
            AssingCleanProfileGrid();
        });
    
          var ds = new kendo.data.DataSource();
                function AssingCleanProfileGrid() {
    
           
                var grid = $('#CleanProfileGrid').data('kendoGrid');
                grid.setDataSource(ds);
                grid.dataSource.read();
                ds = new kendo.data.DataSource({
                    type: "aspnetmvc-ajax",
                    transport: {
                        read: {
                            url: '@Url.Action("GetJsonProfileDataForCleanPanel", "Admin")',
                            type: "POST",
                            dataType: "json",
                        }
                    },
                    schema: {
                        data: "Data",
                        total: function (response) {
                            return response.Total;
                        },
                        model: {
    
                        }
                    },
                  // serverPaging: true,
                    page: 1,
                    pageSize: 20,
                    skip: 0,
                    take: 15,
                  // serverSorting: true,
                });
            grid.setDataSource(ds);
            grid.dataSource.read();
        }
        var IsClickedOnSelectAll = true;
        function CheckUncheckCheckBox() {
            debugger;
            var IsSelctAll = true;
            IsSelctAll = $("#IDIsSelectAllTables").prop("checked");
    
            // alert(IsSelctAll);
            var grid = $("#CleanProfileGrid").data("kendoGrid");
            //  var gridData = grid.dataSource.view();
            var  gridData = $('#CleanProfileGrid').data().kendoGrid.dataSource.data();
            for (var i = 0; i < gridData.length; i  ) {
    
                var firstItem = $('#CleanProfileGrid').data().kendoGrid.dataSource.data()[i];
                firstItem.set('IsToBeCleaned', IsSelctAll);
    
            }
            IsClickedOnSelectAll = true;
        }
        $(function () {
            $('#CleanProfileGrid').on('click', '.chkbx', function () {
                var checked = $(this).is(':checked');
                var grid = $('#CleanProfileGrid').data().kendoGrid;
                var dataItem = grid.dataItem($(this).closest('tr'));
                dataItem.set('IsToBeCleaned', checked);
                if (IsClickedOnSelectAll) {
                    $("#IDIsSelectAllTables").prop("checked", checked);
                    IsClickedOnSelectAll = false;
                }
     
            })
        })
    
        $("#btnRefresh").click(function () {
            location.reload(true);
        })
                $("#btnSave").click(function () {
                debugger;
                    var gridmodel = $("#CleanProfileGrid").data("kendoGrid").dataSource.data();
    
                    var CleanProfileGrid = JSON.stringify(gridmodel);
                    var ProfileName = '@ViewBag.ProfileName';
                    var CleanProfileId = '@ViewBag.CleanProfileId';
                    debugger;
        
                    $.ajax({
                        url: "@Url.Action("CleanProfileData", "Admin")",
                        type: "POST",
                        //dataType: "JSON",
                            data: { CleanProfileGrid: CleanProfileGrid, ProfileName: ProfileName, CleanProfileId:CleanProfileId},
                        success: function (result) {           
                        }
                    });
                    window.location.href ='@Url.Action("ViewProfiles", "Admin")';
        });
    
    </script>
 

Комментарии:

1. панель инструментов: [ <span>YOUR CHECKBOX</span> ] Вы пробовали настраивать с помощью свойства toolbar в kendo grid?

Ответ №1:

Сетка Kendo фактически поддерживает выбор флажка из поля:

Если вы выберете встроенный выбор, вы можете сохранить выбор между операциями — подкачкой / сортировкой / фильтрацией / группировкой.

Ответ №2:

Как отмечалось в другом ответе здесь, сетка имеет встроенную функцию выбора всех.

Но в случае, если вам требуется пользовательский внешний вид или поведение, вы можете использовать для этого шаблоны заголовков столбцов Kendo. Сначала определите свой пользовательский заголовок, представляющий заголовок с флажком. Это может быть размещено над сеткой:

 @helper MyHeaderTemplate() {
    <span style='text-align:right'>My<br/>Header<br/>Checkbox<br/></span>
    @(Html.CheckBox("MySelectAllBox", false,
        new
        {
            style = "font-size:inherit; margin-top:5px",
            @onchange = "handleSelectAllClick(this)"
        })
    )
}
 

Затем обратитесь к шаблону из вашей сетки:

 @(Html.Kendo().Grid<DRS.Model.DTO.CleanProfileModel>()
    .Name("myGrid")
    .Columns(columns =>
    {
        columns.Bound(p => p.MyColumnProperty)
            .HtmlAttributes(new { style="text-align:center" })
            .HeaderHtmlAttributes(new { style = "text-align:center" })
            .HeaderTemplate(@<text>@MyHeaderTemplate()</text>);
    })
)
 

Затем напишите некоторый JavaScript для обработки handleSelectAllClick события по мере необходимости, чтобы выбрать или отменить выбор всех строк сетки.