Completed
Last Updated: 4 Jun 2024 06:04 by ADMIN
Release 2024 Q1

Bug report

Reproduction of the problem

  1. Compare the rendering of the "Next Page", "Last Page", "Previous Page" and "First Page" buttons in RTL between the MVC Grid and the jQuery and Core Grids:

https://demos.telerik.com/aspnet-mvc/grid/right-to-left-support
https://demos.telerik.com/kendo-ui/grid/right-to-left-support
https://demos.telerik.com/aspnet-core/grid/right-to-left-support

Current behavior

Incorrect rendering of the buttons.

Expected/desired behavior

Buttons rendered consistently with the jQuery and Core Grids.

Environment

  • Kendo UI version: 2023.3.1010
  • jQuery version: x.y
  • Browser: [all]
Completed
Last Updated: 3 Jun 2024 08:12 by ADMIN
Release 2024 Q2 (May)
Created by: William Wittsche
Comments: 4
Category: Grid
Type: Bug Report
4

Bug report

Dragging a row from a Grid to another empty Grid is not working.

Reproduction of the problem

  1. Open the following dojo:
    https://dojo.telerik.com/EGIyemen
  2. Try to drag a row to the empty Grid

Current behavior

The row is not inserted in the empty Grid

Expected/desired behavior

The row should be inserted in the empty Grid.

Environment

  • Kendo UI version: 2022.3.1109
  • Browser: [all]
Under Review
Last Updated: 23 May 2024 13:52 by ADMIN
Created by: Ed
Comments: 1
Category: UI for ASP.NET MVC
Type: Feature Request
1

I would recommend that you look at your MVC and ASP.NET core products and try to build some consistency.   

When I learn one component, I kind of expect other similar components to be close to the others.  For instance TreeList and Grid both have toolbars, yet the builders use different capitalizations for their names.   Treelist and Grid both have editable settings, but Treelist does not have the method AdditionalViewData.  

There are many more inconsistency that make these components really hard to use. 

Unplanned
Last Updated: 21 May 2024 08:45 by Fajleabbas
Created by: Fajleabbas
Comments: 0
Category: ProgressBar
Type: Feature Request
0

Is it possible to create a template option for the ProgressBar value? It can be used when the ProgressBar value must be formatted based on the current culture (for example, when the number groups must be separated by space rather than comma (",")).

  $("#progressbar").kendoProgressBar({
    min: 10,
    max: 20,
    value: 15,
    template: "#:kendo.toString(kendo.parseFloat(data.value), 'n2', 'fr-FR')#"
  });

Unplanned
Last Updated: 20 May 2024 12:30 by Ed
Created by: Ed
Comments: 0
Category: TreeList
Type: Feature Request
1
Missing AdditionalViewData Method for the TreeList
Completed
Last Updated: 14 May 2024 13:19 by ADMIN
Release 2024 Q2 (May)

Bug report

Reproducible in MVC with a custom toolbar tool that has a ClientTemplate.

Reproduction of the problem

  1. Configure the Grid for incell editing and a custom command with a template to its toolbar configuration
@(Html.Kendo().Grid<TelerikMvcApp2.Models.OrderViewModel>()
    .Name("grid")
    .Columns(columns =>
    {
        columns.Bound(p => p.OrderID).Filterable(false);
        columns.Bound(p => p.Freight);
        columns.Bound(p => p.OrderDate).Format("{0:MM/dd/yyyy}");
        columns.Bound(p => p.ShipName);
        columns.Bound(p => p.ShipCity);
    })
    .ToolBar(toolbar =>
    {
        toolbar.Save();
        toolbar.Spacer();
        toolbar.Custom().ClientTemplate("<span>test</span>");
    })
    .Pageable()
    .Sortable()
    .Scrollable()
    .Filterable()
    .HtmlAttributes(new { style = "height:550px;" })
    .Editable(editable => editable.Mode(GridEditMode.InCell))
    .DataSource(dataSource => dataSource
        .Ajax()
        .PageSize(20)
        .Model(model => model.Id(p => p.OrderID))
        .Read(read => read.Action("Orders_Read", "Grid"))
        .Create("Orders_Create", "Grid")
        .Update("Orders_Update", "Grid")
    )
)

Current behavior

Duplication of the "Cancel" button.

Expected/desired behavior

A single "Cancel" button is rendered in the toolbar.

Environment

  • Kendo UI version: 2024.1.130
  • jQuery version: x.y
  • Browser: [all]
Completed
Last Updated: 14 May 2024 11:58 by ADMIN
Release 2024 Q2 (May)

Bug report

DropDownList editor in a Form component with ServerFiltering enabled causes a js exception.

Reproduction of the problem

  1. Enable ServerFiltering in the DropDownList editor:
@(Html.Kendo().Form<MVCFormValidation.Models.UserViewModel>()
	.Name("formExample")
	.HtmlAttributes(new { action = "/Home/Index", method = "POST" })
	.Validatable(v =>
	{
		v.ValidateOnBlur(true);
		v.ValidationSummary(vs => vs.Enable(false));
	})
	.Items(items =>
	{
		items.AddGroup()
			.Label("Registration Form")
			.Items(i =>
			{

				i.Add()
					.Field(f => f.FirstName)
					.Label(l => l.Text("First Name:"));

				i.Add()
					.Field(f => f.LastName)
					.Label(l => l.Text("Last Name:"));

				i.Add()
					.Field(f => f.NumberOfShares)
					.Label(l => l.Text("Number Of Shares:"));

				i.Add().Field(m => m.Country.Id)
					.Editor(e => e.DropDownList().DataSource(source =>
					{
						source.Read(read =>
						{
							read.Action("GetCountries", "Home");		
						})
						.ServerFiltering(true);
					}).Filter(FilterType.Contains).DataTextField("Name").DataValueField("Id"))
					.Label("Country");

				i.Add()
					.Field(f => f.Email)
					.Label(l => l.Text("Email:"));
				i.Add()
					.Field(f => f.DateOfBirth)
					.Label(l => l.Text("Date of Birth:").Optional(true));
				i.Add()
					.Field(f => f.Agree)
					.Label(l => l.Text("Agree to Terms:"));
			});
	})
)

Current behavior

On page load a js exception is thrown:
Uncaught Error: Syntax error, unrecognized expression: #

Expected/desired behavior

No exceptions.

Environment

  • Kendo UI version: 2023.3.1114
  • jQuery version: 3.4.1, 3.7.1
  • Browser: [all]
Completed
Last Updated: 13 May 2024 12:59 by ADMIN
Release 2024 Q2 (May)

Bug report

Reproduction of the problem

https://dojo.telerik.com/ORahihiZ/2

  1. Edit a card

Current behavior

The second editor (NumericTextBox) in the popup is focused by default.

Expected/desired behavior

Since the form's focusFirst option is enabled, the first editor (textarea) in the popup should be focused by default.

As a workaround, the textarea can be focused in the editCard event handler:

function onEditCard(e) {
    setTimeout(function() {
        $(".k-taskboard-pane-content textarea").focus();
    }, 100)
}

Environment

  • Kendo UI version: 2023.2.306
  • jQuery version: x.y
  • Browser: [all]
Completed
Last Updated: 13 May 2024 12:58 by ADMIN
Release 2024 Q2 (May)

In a Selectable grid, when only one column is shown in the grid, and the model's Id field is specified, an error occurs on selection.

If you include more than one column (must be more than one visible) it works correctly.

If the model's Id is not specified, it works correctly even with only one column visible. 

 

@(Html.Kendo().Grid<TelerikMvcApp1.Models.OrderViewModel>()
    .Name("grid1")
    .Columns(columns => {
        columns.Bound(p => p.ShipName);
        columns.Bound(p => p.ShipCity).Hidden(true);
    })
    .Pageable()
    .Sortable()
    .Scrollable()
    .Filterable()
    .Selectable(s => s.Mode(GridSelectionMode.Single))
    .HtmlAttributes(new { style = "height:430px;" })
    .DataSource(dataSource => dataSource
        .Ajax()
        .PageSize(20)
        .Read(read => read.Action("Orders_Read", "Grid"))
        .Model(m => m.Id("OrderID"))
     )
)


Unplanned
Last Updated: 10 May 2024 15:28 by Abhishek
Created by: Abhishek
Comments: 0
Category: Upload
Type: Feature Request
0
During chunk upload, if the connection to the server is lost, the upload fails. To upload the file, the upload should start all over again and all the file chunks must be sent to the server.

It would be nice to have an option to continue the upload of a file from a specific chunk, instead of having to re-upload all chunks.
Unplanned
Last Updated: 10 May 2024 10:39 by ADMIN
Hello Team,

Here, I am Using a Kendo MVC Grid to show Customers data. I had applied multiple columns with anchor tag for redirection from one grid to another Page. Some how First two rows only by default showing different color than other rows. Actually First two rows by default showing :hover effect as I checked it in Inspect mode and other rows showing actual color which is applied in anchor tag link colors.

Need More Info
Last Updated: 4 May 2024 04:53 by Pinkesh

Dear team,
Recently I've updated the kendo UI.
currently I'm using the this version.

 

Here I wrote the code for testing.

// cshtml code

@(Html.Kendo().Grid<Alliant.Controllers.ProductViewModel>() .Name("mixedSort") .Columns(columns => { columns.Bound(o => o.ProductName).Width(300); columns.Bound(p => p.UnitPrice).Width(300); columns.Bound(p => p.UnitsInStock).Width(300); columns.Bound(p => p.Discontinued).Width(300); columns.Bound(p => p.Group).Width(300); }) .Pageable(pageable => pageable.ButtonCount(5)) .Sortable(sortable => sortable .AllowUnsort(true) .SortMode(GridSortMode.Mixed) .ShowIndexes(true)) .DataSource(dataSource => dataSource .Ajax() .PageSize(5) .Read(read => read.Action("Sorting_Orders_Read", "Testing")) ) )

// Controller code

public ActionResult Sorting_Orders_Read([DataSourceRequest] DataSourceRequest request)
{
    List<ProductViewModel> lstData = new List<ProductViewModel>()
    {
        new ProductViewModel(){Group="A",ProductName="A1",UnitPrice=10,Discontinued=1,UnitsInStock=50},
        new ProductViewModel(){Group="A",ProductName="B1",UnitPrice=20,Discontinued=2,UnitsInStock=60},
        new ProductViewModel(){Group="B",ProductName="C1",UnitPrice=30,Discontinued=3,UnitsInStock=70},
        new ProductViewModel(){Group="C",ProductName="D1",UnitPrice=40,Discontinued=4,UnitsInStock=80},
        new ProductViewModel(){Group="C",ProductName="E1",UnitPrice=50,Discontinued=5,UnitsInStock=90},
    };

    return Json(lstData.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
}

// Model

public class ProductViewModel
{
    public string ProductName { get; set; }
    public decimal UnitPrice { get; set; }
    public int UnitsInStock { get; set; }
    public decimal Discontinued { get; set; }
    public string Group { get; set; }
}

Could you please help me to figure out the issue?

I also checked the jquery code.

// Jquery code render by kendo

Unplanned
Last Updated: 26 Apr 2024 15:05 by Jennifer
Created by: Jennifer
Comments: 0
Category: Grid
Type: Feature Request
1
Add support for drag & drop of multiple rows between Grids
Completed
Last Updated: 3 Apr 2024 07:45 by ADMIN
Release 2024 Q1
Created by: Victor
Comments: 21
Category: UI for ASP.NET MVC
Type: Feature Request
25
The Grid should allow switching between case sensitive and case insensitive filtering.
Unplanned
Last Updated: 26 Mar 2024 09:16 by nidhin
Created by: nidhin
Comments: 0
Category: Grid
Type: Bug Report
1

Bug report

A hidden template column that is not included in the ColumnMenu appears after showing another column

Reproduction of the problem

  • Use the following declaration for the columns:
              .Columns(columns =>
              {
                  //Hidden template column
                  columns.Template(x =>
                  {
                      int rptIndex = Model.IndexOf(x);
                      string namePrefix = "Grid[" + rptIndex + "].";
                      Html.Hidden(namePrefix + "Id", x.Id, new { @readonly = "readonly" });
                      Html.Hidden(namePrefix + "Name", x.Name, new { @readonly = "readonly" });
                  }).Hidden().IncludeInMenu(false);

                  columns.Bound(x => x.Id).Width(120).Hidden(true);
                  columns.Bound(x => x.Name).Width(200);
                  columns.Bound(x => x.ReportingDateOriginal).Width(500).HtmlAttributes(new { id = "reporting-date-original" })
                    .Filterable(f => f.UI(GridFilterUIRole.DateTimePicker).Cell(c => c.Template("dateFilter")));
                  columns.Bound(x => x.Test1).Width(200).Hidden(true);
                  columns.Bound(x => x.TimezoneOffset).Width(200).HtmlAttributes(new { id = "reporting-date-offset" });
                  columns.Bound(x => x.Test2).Width(200).Hidden(true);
                  columns.Bound(x => x.ReportingDateAdjusted).Width(500).HtmlAttributes(new { id = "reporting-date-adjusted" })
                    .Filterable(f => f.UI(GridFilterUIRole.DateTimePicker).Cell(c => c.Template("dateFilter")));
                  columns.Bound(x => x.Test3).Width(200);
                  columns.Bound(x => x.Test4).Width(200).Hidden(true);
                  columns.Bound(x => x.Test5).Width(200);
              })
  • Show the Id column

Current behavior

The first time instead of the Id, the template column appears.

Expected/desired behavior

The Id column should appear and the template column should remain hidden.

Environment

  • Kendo UI version: 2024.1.130
  • Browser: [all]
Declined
Last Updated: 25 Mar 2024 13:37 by ADMIN
Server filtering kendo grids and json deserialization errors in asp.net.
When we are managing large volumes of data with several thousand datasource objects (grid rows) all of the rows need to be transported with each event.
This leads to errors with the json being too large to serialize.

We wish to restrict the data footprint and only return data for the page requested.
so if the grid has 100 pages and page size is 10 we only want to return the 10 rows required for the page, not 1000 rows.
This is not possible with the Kendo grid.
To work around this issue we have devised a strategy to return the the number of datasource objects Kendo grid expects up to the requested page count, but they are empty objects with no data, and then only have the last 10 rows populated with data.
It would be better for the grid control just to expect the number of results expected to the selected page and not have to add the dummy rows, so long as the total number of rows is provided so that the grid knows how many pages there are.

Our work around looks something like this in asp.net MVC

var users = cm.getUsers();
var result = new DataSourceResult();
var results = new List<user>();
int index = 0;
if (pageNum == 1)
    results = users.Take(pageSize).ToList();
else
{
     index = pageSize * (pageNum - 1);
     results = users.Skip(index).Take(pageSize).ToList();
}
List<user> output = null;

[This is the bit that should be handled by the kendo grid, without the need for dummy rows to further reduce json size]
if (index == 0)
{
     output = new List<user>(results);
}
else
{
     output = new user[index].ToList();
     output.AddRange(results);
}
result = output.ToDataSourceResult(request);
result.Total = users.Count();
return Json(result, JsonRequestBehavior.AllowGet);
Completed
Last Updated: 25 Mar 2024 13:35 by ADMIN
Created by: Michael
Comments: 1
Category: Installer and VS Extensions
Type: Bug Report
0
I recently updated my Telerik extensions in VS2019 and the MVC extension (v2022.1.429.1) is causing Visual Studio to hang when I open a solution that is based on KendoUI for MVC.  When I disable the extension the solution opens normally and no hang is encountered, I am able to navigate the projects in the solution and perform all required actions.
Completed
Last Updated: 25 Mar 2024 13:34 by ADMIN
Created by: Marcel
Comments: 1
Category: UI for ASP.NET MVC
Type: Feature Request
0

I'm using the ClientTemplate-Feature to render buttons for CRUD-actions in grids. For one entity I have to use a TreeList instead of a Grid due to parent-child relations. It would be great if I could use the same templates I use for the grid for the treelist as well.

Example:

columns.Bound(x => x.UserName)
        .ClientTemplate("<a href='" + Url.Admin().Account() + "/#= Id#/edit'>#= UserName #</a>")
        .Width(300);
Declined
Last Updated: 25 Mar 2024 13:34 by ADMIN

Not sure if this is already in the works but when building mvc grids it would be helpful to have the ability to prevent a column from getting too big when the screen size is larger than the grid needs. Right now if columns are turned off and there is more space for the unlocked columns, they expand to fill the page which is normally fine but in some instances it looks silly to have a column for example that you would enter a 2 digit number in to be 300 plus px wide.

 

Declined
Last Updated: 25 Mar 2024 13:31 by ADMIN
Created by: Chris
Comments: 1
Category: UI for ASP.NET MVC
Type: Bug Report
0

I have a cshtml page that uses Kendo UI ASP.NET MVC that does the following:

  • sends an ajax request to a controller action method,
  • opens a new tab using window.open(),
  • displays a temporary message to let the user know that something is happening,
  • then overwrite the new tab content using the view that is contained in the ajax response.

The view contains one or more grid widgets (the number depends on how many result types were requested) and each grid is set up to export Excel.

The problem is that when window.open() is used to open a new tab, the browser history state is null and the window.location.href is empty with the browser location showing "about:blank". For Chrome and Firefox, this does not cause any issues when exporting excel for the grid.  However, when using Edge with this situation, when the Export to Excel grid toolbar button is clicked and the onExportExcel event is fired,  the browser Open or Save dialog prompt is displayed but the active tab (the one that contained the grid) closes. This behaviour is very undesireable. The ProxyUrl grid excel option does not fire since Edge supports javascript file saving.

A workaround for this situation is to forcibly set the new tab window object location href by using the window.history.pushUpdate function. A code snippet is included below.


let dataModel = {Id = 123571113, Name="jason bourne"};
let jsonModel = JSON.stringify(dataModel);
let curDate = new Date();
let targetUrl = '@Url.Action("Reports", "Report", new { @area = "Reports" })';
let targetWindowName = "something meaningful" + " " + curDate.toISOString();//add datetime stamp to avoid issue where you cannot open a window with the same name as the current window.
let html = "some html content to provide a temporary message to your audience";
let targetWindow = window.open(targetUrl, targetWindowName);
if (targetWindow !== null && targetWindow !== undefined)
{
   targetWindow.document.write(html);
   targetWindow.document.close(); // to finish loading the page
   targetWindow.document.title = targetWindowName;

   //attempt to forcibly update the URL in the history and target window location to fix problem with grid export to excel on Edge browser
   let targetWindowHistoryHref = window.location.href;
   if (oModel.BuildingDesigns !== null && oModel.BuildingDesigns !== undefined && oModel.BuildingDesigns.length > 0) {
       targetWindowHistoryHref += "?oBuildingDesignId=" + oModel.BuildingDesigns[0].ObfuscatedBuildingDesignId + "&BuildingDesignName=" + oModel.BuildingDesigns[0].BuildingDesignName;
   } else {
       targetWindowHistoryHref += "?" + oModel.Target;
   }
   targetWindow.history.pushState(null, null, targetWindowHistoryHref);
}
$.when(
	$.ajax({
		type: "POST",
		dataType: "html", // this is the data type expected to be returned from the controller method
		contentType: "application/json", // this is the content type expected by the controller method
		url: targetUrl,
		data: jsonModel,
		beforeSend: function() {
			console.log(".... submitting report request");
			athena.loader.loading("submitting report request");
		},
		success: function(response) {
			athena.loader.stopLoading();
			if (debugLevel > 2) {
				console.log(".... response = " + response + " : ", response);
			}

			//attempt to populate the target browser tab with the response
			try {
				console.log(".... attempting to open a browser tab and populate it with the HTML response object");
				console.log(".... targetWindow = " + targetWindow);
				//will trigger popup blockers :: targetWindow = window.open("", oModel.Target);
				if (targetWindow !== null) {
					if (response === null || response === undefined) {
						targetWindow.document.body.innerHTML = '';
					} else {
						//completely replace the existing document (not just the innerhtml)
						targetWindow.document.open();
						targetWindow.document.write(response);
						targetWindow.document.close();
						targetWindow.document.title = targetWindowName;
					}
				}
			} catch (ex) {
				// do nothing, just catch when the open fails.
				console.log("error: " + ex.message);
			}
		},
		error: function(jqXhr, textStatus, errorThrown) {
			console.log('.... error :: ajax status = ' + textStatus + ' :: errorThrown = ' + errorThrown);
			console.log('....-- jqXhr.responseText :: \n' + jqXhr.responseText);
		}
	})
).done(
	function() {
		console.log(".... report request has completed");
		targetWindow.focus();
	}
);