Kendo grid doesn't have in-built functionality to prevent row selection based on some condition. One way is to remove css class "k-state-selected". But i think there should be something like "changing" event which will be called before "change" event. In that event developer write code and can cancel "change" event. Or Boolean property something like "enabled" at row level (or cell level for cell selection) .
Drag fill multiple cells like excel. Kendo Spreadsheet control already has it. This is a crucial feature missing from versatile grid , IMO
At the moment, Remote Validation on the grid does not work with incell editing. I would like to see this restriction removed. Normal validation works with incell editing; however, the remote does not. I should not have to change the appearance and functionality of the grid from incell to to inline just because the standard validation is insufficient. I appreciate that this is not an easy change, but hope you are able to give it some priority.
The grid "beforeEdit" event is designed, as per documentation, "for preventing the editing depending on custom logic". However, this event provides only information about the edited row, not cell, which severely limits what that logic can do. A related event, "edit", passes information about the container, which is a table cell in incell mode. There is no reason for "beforeEdit" not to do the same - both event are triggered merely several lines apart.
We have a feature where we initialize our Grids with row filters, but we don't display them right away. We show hide them with a "Show/Hide Filters" button. It would be great to save some time on initial load of the grid (our client wants the ability to display up to ~100 columns with filters, and there's a noticeable performance impact building those filter controls), and delay that time for if/when the user decides they want to actually use the filters.
Quite often you would need to set custom attributes to buttons that may not have any inbuilt functionality for Kendo Grid. This option is currently not available unless we use a template and build our own buttons. It would be useful to set the attributes similar to how the class attributes are set so we won't have to build a template of our own.
Add a new attribute columns.command.materialIconClass and render it e.g. as <i class="material-icons">contact_mail</i> Example: var grid = $("#grid").kendoGrid({ dataSource: { pageSize: 20, data: createRandomData(50) }, pageable: true, height: 550, columns: [ { field: "FirstName", title: "First Name", width: "140px" }, { field: "LastName", title: "Last Name", width: "140px" }, { field: "Title" }, { command: { materialIconClass: "contact_mail", text: "View Details", click: showDetails }, title: " ", width: "180px" }] }).data("kendoGrid");
Currently, the Kendo grid has an option to apply only one type of filtering for a specific column (be it standard filtering or multi-checkbox filtering). There is a custom approach which actually builds a custom check box list that is attached to the standard filter. But, there are lot of options that are missing like Select All, Search box etc. There should be a way where user can apply different types of filter criteria on the same column.
When a user zooms OUT on a browser(like Google Chrome) to 67% or 75%, sometimes the resize handles do not work. We added css on top to see why(made the resize handle more visible). The handle moves to the left the more the user zooms out. Seems to work fine up to 80% but starts to fail after that. Thanks
Currently the new select column and the "selectable" setting of the grid are mutually exclusive. This seems completly counter intutive. If you you have a select column and the "selectable" mode set to "multiple", then when you drag select or ctrl click on row the checkbox to be selected. Right now it's not.
Currently, pressing the arrow keys will scroll up and down the grid. It would be good if we could also use the arrow keys to change the selected row
It would be nice to have the option to configure different column titles for the column menu. For example, when there is a multi-header Grid, you could use this functionality to add the header title to the column title. https://www.screencast.com/t/qgeK9fFMPP https://www.screencast.com/t/NRl61JFzFH
I know there was a request was declined, but DOM double click can't pass data row, it is a common feature to have.
With out using the group column header(columns.columns). it is better to enable one option to keep some of the columns locking together in the grid. If you reorder one column other columns should move with it like that. When we use the columns.columns option we can't find the columns under that header using the column Index (column[index]) option.
Allow changing Grid's AutoComplete filter operator per Grid (not for each column) through a property
Current, if one were to use the Kendo Grid in UI for MVC, there's no way to bind the datasource using Ajax binding and specify server side parameters to the read function in the controller. In many cases, the read function on the controller side will use a primary key to do a select statement to get particular details of a model to render. This is relatively simple to keep track of on the javascript side and server side when there's just one grid, as we can use a hidden input and always update it's value from the model. However, when we have an array of grids, and an array of primary keys for the grids, this is very difficult to keep track of which read function corresponds to which grid. The only solution is to generate multiple javascript read functions with the primary key baked into the names and in the bodies of the functions on the server side, which is ugly and not optimal for security. @foreach(var modelID in Model.ModelIDs) var readFunction = "function modelStatsReadData_" + modelID + "()"; <text> @readFunction { return { modelID: @modelID } } </text> } @*end foreach loop*@ @foreach(var model in Model.Models) { .... .DataSource(dataSource => dataSource .Ajax() .Model(model => { model.Id(m => m.ID); }) .Read(read => read.Action("FlowPlanDetails_Read", "SubmitFlow").Data("flowPlanReadData_" + @model.D)) } This is solvable if we do server side binding for the datasource, as we can pass route values. But that is an entirely different implementation and we shouldn't have choose Ajax() versus Server() binding based on how functional the API is.
Currently, there's no way to pass variables into client footer template functions that are registered with client footer templates. In the case when you have multiple grids on the same page with different grid ids, you are forced to instantiate multiple javascript callback functions with the grid id/name baked into the function. Consider: @foreach @foreach (var model in Model.MyModels) ... ... @(Html.Kendo().Grid<eFHOL.Models.ViewModels.MyModelModel> () .Name("ModelGrid_" + @model.ID) .Columns(columns => { columns.Bound(m => m.Name).Width(30).ClientFooterTemplate("#= footerLabel(data) #"); columns.Bound(m => m.Hours).Width(30).ClientFooterTemplate("#= HoursSumAvg_" + @model.ID + "(data) #"); columns.Bound(m => m.Weight).Width(30).ClientFooterTemplate("#= WeightSumAvg_" + @model.Weight + "(data) #"); And you will have to have server side code to register and wire up each of these distinct javascript footer template callback functions: @foreach(var modelID in Model.ModelIDs) { var hourFunction = "function HoursSumAvg_" + modelID + "(model) "; <text> @hourFunction { var grid_name = '#FlowPlanDetailsGrid_@modelID'; return HoursSumAvg(grid_name); } This quickly becomes a mess if you have a for loop that renders 5 or 10 grids, as we have the use-case for. It would be very helpful if there was a way to register the name of the callback which accepts server side parameters that can be evaluated on the server side and passed to the javascript function. Alternatively, if the client footer template functions could somehow retain the name of the grid they are bound to, via a property in the parameter passed in, that would be good enough.
It seems that you would want to conditionally have clearSelection() behave differently with persistSelection enabled, as it does not clear the selection of items on other pages. At the very least offer us a clearAllSelections() method if modifying the behavior of the other method is not desirable.