Pending Review
Last Updated: 13 Oct 2021 16:57 by David

We are using the functionality included with the grid (mvc and .net core) to save and set filters, sorts and groupbys.  Where the functionality fails is if the grid or columns change in any way (including toolbars).  the getoptions() and setoptions() is a snapshot in time and is not very adaptive.  Our users had 1000's of saved grids and was really not allowing us to change the grid data or columns or even change the default order of the columns.  What we ended up doing to allow the saved grids to work and the developers to have the freedom to change the grids was:

1.  Getting the grid that is passed down to the screen and saving it for a clear functionality (and knowing what the default was supposed to be).

2.  Looking at the sort, groupby and filter subcomponents of the saved grid objects by column and looking for a column match in the grid that was passed to the screen.

3.  If a column in the saved grid does not exist, do not apply those filters, sorts and groupby's and alert the user

4.  Only apply/change the filters, sorts and groupbys via a setOptions() on the grid that is passed down as opposed to a set of the entire object.

6.  If a column is added to the grid alert the user that the column is added

7.  If the grid has changed, use a getOptions() to resave the users selections with the modifications above

8.  Load the data 

 

We have javascript that does the column compare, with differences in the grid if your developers would like to see how we solved this issue. 

Unplanned
Last Updated: 13 Oct 2021 09:54 by ADMIN
Created by: Darryl
Comments: 1
Category: Grid
Type: Bug Report
0

Hi

 

Just to let you know that the Demo for the Grid SignalR feature is showing an error.

(see screen dump attached)

 

Thanks
Darryl

Completed
Last Updated: 07 Oct 2021 09:37 by ADMIN
Release 2021.R3.SP.next

Per the documentation for the Grid's Search Panel:

"When the server operations are enabled, you can search only by using string fields."

 

This is an oddly-specific limitation to have that causes an awkward user experience. Grids in some areas with limited data might use client operations and, as a result, the Search Panel is capable of searching all columns in a Grid. Other areas, however, might have grids with significantly more data and be using server operations for performance reasons. A side-effect of this would mean the Search Panel is incapable of filtering on non-string fields. This not only might lead to unexpected results to an end-user, but also requires the developer to explicitly list each string field that can be searched. If a developer forgets to list only string fields, the default action will be for it to attempt to filter on all fields. If any fields happen to not be strings, you still get a loading indicator as if it's attempting to filter, but the Ajax request silently fails and returns an error 500 behind the scenes.

There are some manual workarounds discussed here, as well as some information as to why this limitation exists. It seems like the problems causing these limitations are known, as are some rough workarounds to get around it. It would be great if we could get some official support to address this limitation so developers aren't left to either work around it on their own or avoid using this feature altogether. This feature would be great if it weren't for this limitation. A single place to quickly and easily type in something to filter on, and have that filter applied against all columns could definitely save some time and be very useful, but with this limitation with a pretty technical explanation (from an end-user perspective), the unexpected mixed results could instead lead to confusion and frustration, and distrust of this feature.

Completed
Last Updated: 14 Sep 2021 09:48 by ADMIN
Created by: Bharat
Comments: 1
Category: Grid
Type: Bug Report
2

Hi Kendo Team,

I am working on Kendo UI ASP.NET Core Grid binding with SignalR. But while starting Hub and providing the Promise, I am facing an error "The "promise" option must be a Promise."

I am following this URL for reference: https://demos.telerik.com/aspnet-core/grid/signalr .

Checked on your website as well, but the issue is also coming there. Here is the URL: https://docs.telerik.com/kendo-ui/api/javascript/data/datasource/configuration/transport.signalr

In this link, when clicking on "Open In Dojo" button, it opens a new window, then clicks on the Run button. It will generate an error in the console "Uncaught Error: The "promise" option must be a Promise.". 

Please check the attached snapshot.

Please reply asap. Thanks in advance!

Declined
Last Updated: 12 Aug 2021 07:46 by ADMIN
Created by: Carl
Comments: 3
Category: Grid
Type: Feature Request
0
An officially supported Telerik editor control for datatype XML as a grid column  ---  so that we can easily and conveniently edit XML data in a grid column
Unplanned
Last Updated: 19 Jul 2021 12:05 by ADMIN

Currently a DateTime property of a nested object does not get parsed when used as a column in the Grid:

public class MyClass
{
   public MyOtherClass Item{get;set;}
}

public class MyOtherClass
{
    public DateTime CreatedAt{get;set;}
}

and Formatting cannot be applied:

 columns.Bound(p => p.Item.CreatedAt).Title("Time").Format("{0:D}");

 

Declined
Last Updated: 15 Jul 2021 07:20 by ADMIN
Created by: Ravi
Comments: 2
Category: Grid
Type: Feature Request
1

Hi Team,

I'd like to request adding a configuration to the Kendo UI Grid or ExcelExport event which would be a setting to autofit the Excel sheet columns instead of changing the workbook.sheets.columns.autowidth. 

Thank you!

Unplanned
Last Updated: 09 Jul 2021 13:12 by Andy

Bug report

The DataSource's property groupPaging: true prevents the Grid's group from expanding if it has a defined groupHeaderColumnTemplate.

Reproduction of the problem

  1. Open this Dojo
  2. Try to expand the Grid's groups

Also reproducible in the Core wrapper where an error is thrown: kendo.all.js:8743 Uncaught TypeError: Cannot read property 'hasSubgroups' of undefined

Current behavior

groupPaging is not compatible with the groupHeaderColumnTemplate

Expected/desired behavior

groupPaging and the groupHeaderColumnTemplate should be compatible

Environment

  • Kendo UI version: 2021.2.616

  • Browser: [all]

Unplanned
Last Updated: 07 Jul 2021 11:07 by ADMIN
Created by: luke
Comments: 1
Category: Grid
Type: Feature Request
1

It will be great if we can have a very simple "out-of-the-box" way to add a Column Chooser in the toolbar, similar to the Search Feature.

Something like Syncfusion's column chooser here:
https://ej2.syncfusion.com/aspnetcore/Grid/ColumnChooser

This will help me significantly in my development effort and provide a much better experience for my paying customers.

I have hundreds of grid tables with different schemas, columns with MinScreenWidth, and hidden columns (depending on the availability of data).

On a page, it can have multiple grid tables that are dynamically generated.

I also use View Component to generate each grid table.

The current column menu isn't perfect because I want it to only act as a filter checkbox, not a menu where a user needs to click twice to access the filtering feature. (And my users need to use the filtering mechanism A LOT)

Thanks,

Luke

Unplanned
Last Updated: 01 Jul 2021 12:38 by ADMIN
Created by: Nguyen Ngoc
Comments: 1
Category: Grid
Type: Feature Request
1

At moment the "ForeignKey" method supports only predicates. Is it possible to implement a String overload (a screenshot is attached)?

Unplanned
Last Updated: 10 Jun 2021 10:44 by ADMIN

Add GroupPaging method to the configuration of the Custom DataSource in Telerik UI for ASP.NET Core as available for Telerik UI for ASP.NET MVC.

Example: https://demos.telerik.com/aspnet-mvc/grid/grouppaging

 

In Development
Last Updated: 08 Jun 2021 08:45 by ADMIN
Created by: William
Comments: 3
Category: Grid
Type: Feature Request
15

I'm currently evaluating the ASP .Net Core Components and whilst I'm liking it so far, I have to say - the documentation leaves a lot to be desired.

At the moment, I am trying to use grid and looking at documentation, I have no idea if I am meant to be looking in Kendo.Mvc.UI.Fluent or Kendo.Mvc.UI - and when I am there and find an item, there just isn't enough detail. In addition, the demos section appears to actually be more helpful and I'm constantly looking there.

What caused me to write this is that I have simply enabled GridFilterMode.Row on an instance and whilst I like it, I want to change the default from "Is Equal To" to "Contains"... I have been experimenting for the past few hours without any luck and I'm going round in circles on documentation:

I can see that Filterable requires GridFilterMode, but the documentation is lacking - https://docs.telerik.com/aspnet-core/api/Kendo.Mvc.UI/GridFilterMode#kendomvcuigridfiltermode

I then try to find the filterable modes documentation, but, half the features/methods just don't seem to have any affect whatsoever.

Personally, I'm having great luck learning about your components from the demo section and adapting the code to suite my needs - but, if there isn't a demo, it appears to be a very hard task to learn what is and isn't possible.

Completed
Last Updated: 27 May 2021 11:19 by ADMIN
Release 2021.R2
Created by: erwin
Comments: 0
Category: Grid
Type: Bug Report
4

Bug report

The Kendo UI Grid's pager for UI for ASP.NET Core does not have an "All" option and it can't be configured in the Razor syntax.

Current behavior

Using the Kendo UI Grid's pageable.PageSizes, the ALL option is not available for UI for ASP.NET Core as it's only an Int32[].

Expected/desired behavior

The All option should be included like in the UI for ASP.NET MVC Razor Syntax.

Environment

  • Kendo UI version: 2020.3.915
  • Browser: all
Completed
Last Updated: 27 May 2021 11:18 by ADMIN
Release 2021.R2.SP.next

Bug report

The Kendo UI Sortable for ASP.NET Core assumes that all selectors are by "id".

Reproduction of the problem

1. Set the .For() option of the Sortable widget to a class selector:

@(Html.Kendo().Sortable()
    .For(".k-grid table")
    // . . . 
)

2. Inspect the page source.

3. The following string is rendered:

<script>
    kendo.syncReady(function () { jQuery("\\.k-grid table").kendoSortable(// options) });
</script>


Expected/desired behavior

The Sortable widget should allow for passing any jQuery selectors.

Environment

* **Kendo UI version:** 2019.3.1023
* **jQuery version:** 1.12.4
* **Browser:** [all] 

Completed
Last Updated: 18 May 2021 12:17 by ADMIN
Release 2021.R2.SP.next

Hi folks!

I am using the Grid's ColumnMenu with its new ComponentType-property set to "modern" like this:

@(Html.Kendo().Grid<my_fancy_web_application.ViewModels.ProjectListViewModel>()

                .Name("myGrid")
                .Editable(editable => editable.Mode(GridEditMode.InLine).DisplayDeleteConfirmation("Willst Du diesen Eintrag wirklich löschen?"))
                .Sortable()
                .Scrollable()                
                .Pageable(pageable => pageable.Enabled(false))
                .ColumnMenu(columnMenu => columnMenu.ComponentType("modern"))
// ... going on with some further definitions
)

In the <head>-Tag of my _Layout.cshtml file, I have set the Kendo Culture to Swiss German:

<script>kendo.culture("de-CH")</script>

What I now observed is, that the buttons "Apply" and "Reset" did not get translated properly and remain in English (see Column_Menu_Reset_Apply_Button.png). Whereas other messages are correctly translated. 

I tried to find out which message property was set there, so that I could add it manually to the "kendo.messages.de-CH.min.js" (as by the way I still have to do for e.g. the Grid's searchbar placeholder "Search..."). 

In the loaded kendo.all.min.js (2021.1.330) I discovered, that there was no message property in place, and the texts were rather hard-coded:

'<div class="k-columnmenu-actions">' + '<button class="k-button" type="button">Reset</button>' + '<button class="k-button k-primary" type="button">Apply</button>' + '</div>' + '</div>'

With the Chrome's dev tools and the source map, I found the above code on line 55815 by searching for the class "k-columnmenu-actions".

Could you please change the mentioned code to make use of the kendo.messages-properties and update the culture-specific kendo.messages files accordingly?

Thanks in advance!

Kind regards,

Janick

 


Completed
Last Updated: 11 May 2021 06:13 by ADMIN
Created by: Sean
Comments: 19
Category: Grid
Type: Feature Request
89
The ability to export a grid to excel has been a great addition, we would like the ability to export in CSV and XML also.
Declined
Last Updated: 10 Feb 2021 08:42 by ADMIN

Hi!

We're using a drop down list as a grid cell's edit template, but.. our users are unable to properly edit the rows at the bottom of the grid due to drop down list going off the page, and closing when they attempt to scroll.

 

any ideas?

Declined
Last Updated: 04 Feb 2021 12:05 by ADMIN

When you create a Grid using a TModel that inherits from DynamicObject, a type cast exception is thrown when setting the DataSource Model Id property.

public class Metadata : DynamicObject

{ ... }  


...
.DataSource(dataSource =>
{
    dataSource.Ajax()
      .Model(model =>
      {
          model.Id("Id");
      });
})

A type cast exception is thrown by the following line in Kendo\AspNet.Core\Kendo.Mvc\UI\DataSource\Fluent\DataSourceModelDescriptorFactoryBase.cs because ModelDynamicDataKey is not generic, so it cannot be cast to IDataKey<TModel>

dataKey = (IDataKey<TModel>)new ModelDynamicDataKey(fieldName, lambdaExpression);


The following code changes fix the issue:

DataSourceModelDescriptorFactoryBase.cs

namespace Kendo.Mvc.UI.Fluent
{
	using System.Reflection;
	using Extensions;

	/// <summary>
	/// Defines the fluent interface for configuring the <see cref="DataSource"/> Model definition.
	/// </summary>
	/// <typeparam name="TModel">Type of the model</typeparam>
	public abstract class DataSourceModelDescriptorFactoryBase<TModel> : IHideObjectMembers
        where TModel : class
    {
        protected readonly ModelDescriptor model;

        public DataSourceModelDescriptorFactoryBase(ModelDescriptor model)
        {
            this.model = model;
        }

        /// <summary>
        /// Specify the member used to identify an unique Model instance.
        /// </summary>
        /// <param name="fieldName">The member name.</param>
        protected void Id(string fieldName)
        {
            IDataKey<TModel> dataKey;
            if (typeof(TModel).IsDynamicObject())
            {
                var lambdaExpression = ExpressionBuilder.Expression<TModel, object>(fieldName);
                dataKey = new ModelDynamicDataKey<TModel>(fieldName, lambdaExpression);
            }
            else
            {
                dataKey = GetDataKeyForField(fieldName);
            }

            dataKey.RouteKey = dataKey.Name;

            model.Id = dataKey;
        }

        protected IDataKey<TModel> GetDataKeyForField(string fieldName)
        {
            var lambdaExpression = ExpressionBuilder.Lambda<TModel>(fieldName);
            var fieldType = typeof(ModelDataKey<,>).MakeGenericType(new[] { typeof(TModel), lambdaExpression.Body.Type });

            var constructor = fieldType.GetConstructor(new[] { lambdaExpression.GetType() });

            return (IDataKey<TModel>)constructor.Invoke(new object[] { lambdaExpression });
        }
    }
}

 

ModelDynamicDataKey.cs

namespace Kendo.Mvc.UI
{
    using System;
    using System.Linq.Expressions;
    using Microsoft.AspNetCore.Mvc.Rendering;

    internal class ModelDynamicDataKey<TModel> : IDataKey<TModel>
        where TModel : class
    {
        public ModelDynamicDataKey(string memberName, Expression<Func<TModel, object>> expression)
        {
            RouteKey = "id";
            Name = memberName;
            Expression = expression;
            Value = expression.Compile();
        }

        public string Name
        {
            get;
        }

        public string RouteKey
        {
            get;
            set;
        }

        public Func<TModel, object> Value
        {
            get;
        }

        public Expression<Func<TModel, object>> Expression
        {
            get;
        }

        public object GetValue(object dataItem)
        {
            try
            {
                return Value((TModel)dataItem);
            }
            catch (Microsoft.CSharp.RuntimeBinder.RuntimeBinderException)
            {
                return null;
            }
        }

        public string HiddenFieldHtml(IHtmlHelper<TModel> htmlHelper)
        {
            return htmlHelper.Hidden(Name, null, new { id = "" }).ToString();
        }
    }
}


Completed
Last Updated: 02 Feb 2021 14:22 by ADMIN
Release 2021.R1.SP.next

Bug Report

Ticket ID:1486632

When using groupable.sort.compare with client operations and groupPaging, a JavaScript error is thrown:

Reproduction

Dojo

Environment

2020.3.915

Unplanned
Last Updated: 25 Jan 2021 08:23 by ADMIN

Hi,

We have a property EnableHeaderContextAggregateMenu in Radgrid. By enabling this, we can aggregate any column in the Radgrid and show the result value in the corresponding column footer at runtime by the end user.

Do we have similar property in Kendo UI Grid? We need to implement this in Kendo UI Grid which has dynamic column data binding. We had attached a sample code here. Can you please implement the same in the code and revert?

Thanks & Regards,
Shivakumar. K

1 2 3