Unplanned
Last Updated: 07 Jul 2020 07:35 by ADMIN
Created by: Tino K
Comments: 5
Category: Grid
Type: Bug Report
0

Hello,

i guess i've found some bug in the Version 2020.2.617.

I have upgraded from 2020.1.406 to 2020.2.617

after them it is not in the correct way possible for me to hidde or display the correct columns.

 

 

If i click the first or second column nothing happend..

after them i get the wrong fields to hidde or display.. if i use the old js files from your CDN

 

it works again, but i'm not sure what will not be working in our WebApp if i do so.

 

/Tino

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: 07 May 2020 07:00 by ADMIN

When a hierarchy grid id contains a dot, the grid fails to generate its detail template. 

The dot(and other legal HTML identifier characters) should be escaped internally by Kendo, so that they can be selected by jQuery and the grid initialized.

Here is a sample Dojo to illustrate:

https://dojo.telerik.com/@bubblemaster/ASivogAF/2

Unplanned
Last Updated: 08 May 2020 05:13 by ADMIN

Hi Team ,

 

I Am trying to export kendo grid content from Server side as i need to do some modification(View model) before exporting to excel. and also i need to add some custom headers while exporting.

Can you please provide me the solution with example with this scenario.

 

Thanks,

Narasegowda

 

Completed
Last Updated: 13 Oct 2020 17:48 by ADMIN
Release 2020.R3.SP.next

Bug Report:

Whenever the foreign key column of the grid is configured for multi checkbox filtering and is nullable, the value of the "null" option is sent to the server as "NaN".

Steps to replicate:

1. Set ForeignKey column

2. Make the column nullable

3. Set the filterable.multi option to true

4. filter by the null value

A sample project with reproduction has been shared in Ticket with ID: 1463089

 

 

Duplicated
Last Updated: 06 Apr 2020 12:29 by ADMIN
Created by: Rick
Comments: 1
Category: Grid
Type: Feature Request
0
Grid needs an option for top and/or bottom paging.
Declined
Last Updated: 31 Mar 2020 14:56 by ADMIN
Created by: Dan
Comments: 3
Category: Grid
Type: Feature Request
0

Kendo UI has the property https://docs.telerik.com/kendo-ui/api/javascript/ui/grid/configuration/scrollable that can not be set in the UI for ASP.NET Core with the value TRUE

The reason I am asking is because if I change it on document ready using the grid.setOptions if the grid has autobind then the Read method is executed twice.

Unplanned
Last Updated: 18 Mar 2020 17:40 by Kyle

Hi guys,

 

I found out, that the QueryableExtension always generates a ToLower for strings filtered with the equals operator. The ToLower is applied by the FilterOperatorExtensions in this method:

    private static Expression GenerateEqual(
      Expression left,
      Expression right,
      bool liftMemberAccess)
    {
      if (left.Type == typeof (string))
      {
        left = FilterOperatorExtensions.GenerateToLowerCall(left, liftMemberAccess);
        right = FilterOperatorExtensions.GenerateToLowerCall(right, liftMemberAccess);
      }
      return (Expression) Expression.Equal(left, right);
    }

It would be nice, if the to lower is controllable with a parameter. At the moment it generates a to lower in the sql query, which generates a lot of overhead in some situations with large tables.

At the moment I remove all "equal to" filter and apply it manually to the IQueryable object.

 

Best regards

Moritz

Unplanned
Last Updated: 26 Feb 2020 14:57 by ADMIN

### Bug report


### Reproduction of the problem
On the mobile version on Android 10, the Grid does not enter incell editing.

Dojo to reproduce: https://dojo.telerik.com/oDUBuKAt


### Environment

* **Kendo UI version:** 2020.1.219
* **Browser:** Android 10 Web Browser 

Unplanned
Last Updated: 17 Feb 2020 09:27 by ADMIN
Created by: Peter
Comments: 0
Category: Grid
Type: Feature Request
0

At current when working with the french culture, the year in the date will default be represented with 2Y (dd/MM/yy)

This potentially creates a problem for dates>2030, a date like 01/01/30 would be save as 1930 instead of 2030. 

When looking at other culture such nl-BE, en-GB, 4 digits are always used for the year.

I propose to change this also for the french culture so that dd/MM/yyyy would become the standard format.

 

PS: You can download the culture file and change it, but you'd experience a problem with the popup editor in combination with a display template... in this case the local culture file will be ignored and 2 digits would still be used for the date

Unplanned
Last Updated: 15 Jan 2020 15:38 by ADMIN
Created by: Akesh Gupta
Comments: 0
Category: Grid
Type: Feature Request
1
It will be very useful if we can define the EditorTemplateName of a given column using the LoadSettings method of the GridColumnFactory and "List<GridColumnSettings>"
Completed
Last Updated: 06 Oct 2020 14:14 by ADMIN
Release 2020.R1.SP1
Created by: Frank
Comments: 0
Category: Grid
Type: Bug Report
2

Bug report

When the data source of the grid is set to WebAPI, the Batch option is not available. 

Reproduction of the problem

1. Set the DataSource to WebAPI()

2. Attempt to enable the Batch(true) option.

Description

Reproducible only with the latest version of the suite - 2019.3.1023. The Batch option is available in the 2019.3.917 version.

Environment

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

 



Declined
Last Updated: 05 Dec 2019 07:58 by ADMIN

When Batch update mode is set to true, Popup editing mode should write back the data to grid and not call the update actions directly upon confirming the popup editing window.

I have a page containing a grid, in the toolbar there are following buttons:

* Add

* Edit

* Delete 

When the user clicks Edit, the selected row is edited using the pop-up window. Alternatively the user can also double click the row to start editing. 

On the bottom of the page there is a Save and Cancel Changes button. The save changes must update all applied changes, the cancel button must undo them.

At current when Popup editing is used and the user confirms the popup window, changes are immediately written to the database. This breaks functionality of the Cancel button. Cancel will now only apply to deletes.

I need popup functionality because I have too many columns to use in-cell editing.

Telerik is ignoring the setting batch(true) when doing popup editing, so this could even be considered a bug instead of a feature request!

 

 

Unplanned
Last Updated: 17 Dec 2019 15:55 by Frank
Created by: Frank
Comments: 6
Category: Grid
Type: Feature Request
1

With batch editing there are no indicators that the grid is "dirty" after you hit delete, but before you hit the save changes button. [Note, when a user edits a cell, the top corner display a small red flag letting the end user know the cell is dirty and has not been saved/synced to the database yet.] This should be added to let the user know the delete action has not been performed and is in a "pending" state until the save button is pressed. This would be very helpful for UX purposes.

In the meantime, I just apply my own "dirty" class to the save button so end users know to press it before leaving the page if they would like to keep their changes.

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] 

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?

Completed
Last Updated: 18 May 2022 08:37 by ADMIN
Release 2022.R2.SP.next
Created by: Luba
Comments: 0
Category: Grid
Type: Feature Request
6

Currently, the functionality for creating a toolbar template with TagHelpers is not available. 

Completed
Last Updated: 23 May 2019 05:50 by ADMIN
Release 2019.R2.SP.Next
Unplanned
Last Updated: 26 Apr 2019 10:16 by ADMIN
Created by: Chris
Comments: 3
Category: Grid
Type: Feature Request
10

I was wanting to create a multiselect filter inside the kendo grid that will filter an array column, NOT a simple string column.  Just adding the .Filterable(ftb => ftb.Multi(true)) does display a basic 'multiselect' with just checkboxes in it, which is not ideal , but does work.  But, when you click filter, the grid becomes empty.  I had to use a clienttemplate() function, to return an html object like so:

export function MultiRowTemplate(data) {
       if (data == null) {
           return "";
       }
       var row = "";
       for (var i = 0, len = data.length; i < len; i++) {
           row += data[i].Description + "<br/>";
       }
       return row;
   }

 

My column is:

columns.ForeignKey(a => a.DisplayExp, (System.Collections.IEnumerable)ViewData["Exp"], "Id", "Description").ClientTemplate("#= MultiRowTemplate(data.DisplayExp) #").Filterable(ftb => ftb.Multi(true)).Title("Experience");

 

the code for the foreign key doesn't make much sense as it's an array column, but that was pointed to by telerik support on other forum posts.  

So, there must be a way to hook into that column and run some custom code to return to the grid the filtered values?  i've seen examples for jquery, and mvc, but theres nothing for .net core.  This should just work out of the box, as I don't think this is an uncommon need.  Could you give me an example or point me in the right direction?

 

 

 

 

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();
        }
    }
}