I receive an error when I am trying to freeze a column in KENDO grid with a detail template.
Error is: Having Both Detail Templates and Locked columns is not supported.
Suggest the best possible solution to resolve this issue.

Hey All,
I'm using Kendu UI Map object; I'm finding that larger GeoJSON data sets (even simplified ones using mapshaper.org) take a bit of time to load each time I zoom, for each zoom level. I'm working with GeoJSON data, specifically the US Counties data. I've simplified it a bit in an attempt to shrink the filesize, but simplifying it any more distorts the county lines too much.
Is there any way to dynamically load only the counties in view? I'm basically loading the counties on one layer. There are a couple other layers, but I've turned them off. I've not separated the counties by state and tried turning on and off the states that are in view, nor do I know if determining the view port vs. map items to load is trivial or not. It would take a bit of time to extract all the states or convert them from the stl file to GeoJSON.
Any ideas? Am I going about this all wrong?
I want to be able to convert Date into a "Time from now" format. I can accomplish the same using Moment.js library, but if I achieve the same using Kendo UI, I see no point in using Moment.js
http://jsbin.com/bufikakufu/2/edit?html,output
What's the simplest way to get this done using Kendo. I don't want to get into manually parsing date object, and then diffing the date from now etc..

Hi,
I have a complex object like
ID
Name
Dob
EmploymentDetailsObject
EmergencyContactObject
I want to bind this to a Kendo Grid so the ID/Name/Dob/ are the parent row and the EmploymentDetails and EmergencyContact are child rows to this parent
I return a collection of these from an API. I thought I could just bind this collection to the Grid but it doesn't seem to work?
Can I do this? What do I need to do?
Thanks
Hi,
we're strongly interested in the Spreadsheet control for a new product we should release around march/april.
Since we are already using Telerik we could be willing to taka a bet and develop in february using the beta release.
A couple of points though:
- is there a SP2 release for UI/MVC for january, that could improve on the current status of the Beta
- is this issue about cell alignment (due apparently to cells with content wrapped on more than one line - see attached file) known and planned for fixing in the official release
- is there any "tentative" date for the final Q1 release of the widget?
thanks and regards,
Andrea Imberciadori
Senior Consultant
Capgemini Italy
Hi
I need quite a complex validation mechanism as various inputs are related to each other.
I never had problems so far but in my newest application I struggle with the combination of two custom validation rules.
Each rule is applied to an autocomplete input and validation is fired on blur and on various change events. Now, the problem is, that both validation messages are shown on the same input element and not separately for each of them.
Here is my validator setup:
classifiedTaxaValidator = $("#classified_taxa_form").kendoValidator({ validateOnBlur: true, messages: { required: "Dieses Feld ist obligatorisch", subordination: "Diese Unterordnung ist nicht möglich", correctrank: "Der Name passt nicht zur gewählten Rangstufe" }, rules: { correctrank: function (input) { if (input.is("[id=taxon_names_autocomplete]")) { console.log('validating name'); // binomial name chosen ? var nam = input.val(); var parts = nam.split(" "); var rank_id = $('#taxon_rank_id').val(); // exactly uninomial if (parts.length === 1) { return rank_id > 5; } // at least binomial name if (parts.length > 1) { return rank_id < 6; } } return true; }, subordination: function (input) { if (input.is("[id=parent_taxa_autocomplete]")) { console.log('validating parent taxon'); // rank of current taxon must be lower than rank of parent var taxonRankId = $('#taxon_rank_id').val(); return taxonRankId < parentTaxonRankId; } return true; } } }).data("kendoValidator");Any idea what I am missing here?
Kind regards
Alex
If I set up a multi:true filterable column with a datasource on the grid, the datasource returns an array of objects:
[{ code: "A", description: "DescriptionA"}, {code: "B", description: "DescriptionB"}]If I set filterable:
<p>{</p><p>multi: true,</p><p>field: "description"</p><p>}</p>But when I select a few and click filter, how can I get it to create the filter object using code rather than description?
Is it possible to configure the grid to use server filtering with multiple values (ie checkboxes) and have many columns in the filter. e.g.
(ColA = A) and (ColB = B or ColB = BB) and (ColC = C or ColC = CC)
After enabling server filtering on the grid we are using and setting the columns filterable property to include a datasource to read its values from the server, it looks like each column resets any other columns filter, only allowing a single column to contribute to the filter logic.
I notice that the demos for multi checkbox filtering seem to be able to do this, but they are using odata as the data source type for the overall grid.
I am using the following components:
Kendo 2015.3.1111 Commercial
jQuery 2.1.4
I have 2 grids setup with DragDrop. Each grid is bound to a kendo.data.DataSource. If a user removes an item from one grid and then decides to add that item back (before saving to the remote data source) I would like to cancelChanges on the datasource bound to the grid for the one item that was previously removed. This will prevent a remote destroy and remote create call for this one item where the user changed his/her mind.
* Everything else works in this configuration except the cancelChanges(model) call. I do not receive an error on the cancelChanges call, but the item does not go back to its pristine state and remains in the destroyed collection. When I make the sync call, the item is destroyed on the remote data. DataSource documentation suggests that cancelChanges will meet my needs. Please let me know where I am going wrong.
Here is my code in the Drop event of the grid. (DataSource config is below the Drop Code) Thanks for your help.
Ben
gridUserRoles.element.kendoDropTarget({ drop: function (e) { if (viewModel.get('isInputEnabled')) { var dataItem = rolesNotAssignedDataSource.getByUid(e.draggable.currentTarget.data("uid")); rolesNotAssignedDataSource.remove(dataItem); var destroyedData = rolesDataSource.destroyed(); if (destroyedData.length > 0) { //see if tenantApplicationRoleKey is in the already destroyed items of the datasource for (var i = 0; i < destroyedData.length; i++) { if (dataItem.tenantApplicationRoleKey === destroyedData[i].tenantApplicationRoleKey) { //Cancel destroy for this one item var itemToRestore = destroyedData[i]; rolesDataSource.cancelChanges(itemToRestore); return; } } } var addItem = { tenantApplicationRoleId: dataItem.tenantApplicationRoleId, tenantApplicationRoleKey: dataItem.tenantApplicationRoleKey, name: dataItem.name, tenantUserTenantApplicationRoleKey: 0, tenantUserKey: viewModel.get('selectedUser.tenantUserKey') }; rolesDataSource.add(addItem); }
rolesDataSource = new kendo.data.DataSource({
schema: {
model: {
id: 'tenantUserTenantApplicationRoleKey',
fields: {
tenantUserTenantApplicationRoleKey: {type: 'number'},
createdByTenantUserName: { type: 'string', editable: false },
createdOnDate: { type: 'date', editable: false },
modifiedByTenantUserName: { type: 'string', editable: false },
modifiedOnDate: { type: 'date', editable: false },
name: { type: 'string', validation: { required: true } },
tenantApplicationRoleId: { type: 'string', validation: { required: true } },
tenantApplicationRoleKey: { type: 'number', validation: { required: true } },
tenantUserKey: { type: 'number', validation: {required: true}}
},
errors: 'message'
}
},
error: function (e) {
console.log(e.xhr.responseText);
var errorString = config.getErrorMessage(e);
viewModel.set('showAlert', true);
viewModel.set('alertMessage', errorString);
kendo.ui.progress(editWindow.element, false);
},
transport: {
read: {
type: 'GET',
url: config.apiUrl + 'api/Users/0/Roles',
dataType: 'json',
contentType: "application/json",
beforeSend: function (req) {
req.setRequestHeader('Authorization', 'Bearer ' + user.userProfile.token);
}
},
create: {
type: 'POST',
url: function (e) {
return config.apiUrl + 'api/Users/' + e.tenantUserKey + '/Roles';
},
dataType: 'json',
contentType: "application/json",
beforeSend: function (req) {
req.setRequestHeader('Authorization', 'Bearer ' + user.userProfile.token);
}
},
destroy: {
type: 'DELETE',
url: function (e) {
return config.apiUrl + 'api/Users/' + e.tenantUserKey + '/Roles/' + e.tenantUserTenantApplicationRoleKey;
},
//dataType: 'json',
contentType: "application/json",
beforeSend: function (req) {
req.setRequestHeader('Authorization', 'Bearer ' + user.userProfile.token);
}
},
parameterMap: function (data, type) {
if (type !== 'read') {
return kendo.stringify(data);
}
}
}
});