I have a selectable grid (only one row can be selected). When an item is selected, it is bound to a form for editing. Textbox in the form has a custom binding 'valueInput'. If I select a several different items from a grid and then try to edit current selection in the form, all previosuly selected items are modified. If I change binding to built-in 'value' then it works fine (only last selected item gets modified). How to fix it ?
How get the incorrect behavior:
1. Select an element from grid.
2. Select another element from grid.
3. Modify textbox value.
4. All previously selected items will change.
<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>Untitled</title> <link rel="stylesheet" href="https://kendo.cdn.telerik.com/2018.2.516/styles/kendo.common.min.css"> <link rel="stylesheet" href="https://kendo.cdn.telerik.com/2018.2.516/styles/kendo.rtl.min.css"> <link rel="stylesheet" href="https://kendo.cdn.telerik.com/2018.2.516/styles/kendo.default.min.css"> <link rel="stylesheet" href="https://kendo.cdn.telerik.com/2018.2.516/styles/kendo.mobile.all.min.css"> <script src="https://code.jquery.com/jquery-1.12.3.min.js"></script> <script src="https://kendo.cdn.telerik.com/2018.2.516/js/angular.min.js"></script> <script src="https://kendo.cdn.telerik.com/2018.2.516/js/jszip.min.js"></script> <script src="https://kendo.cdn.telerik.com/2018.2.516/js/kendo.all.min.js"></script></head><body> <div class='form'> <input data-bind="valueInput: text" /> </div> <div class='grid'></div> <script> kendo.data.binders.valueInput = kendo.data.Binder.extend({ init: function (element, bindings, options) { kendo.data.Binder.fn.init.call(this, element, bindings, options); let that = this; $(that.element).on("input", function () { that.change(); }); }, refresh: function () { let that = this; let value = that.bindings["valueInput"].get(); $(that.element).val(value); }, change: function () { var value = this.element.value; this.bindings["valueInput"].set(value); } }); function change(e) { let item = e.sender.dataItem(e.sender.select()); kendo.bind($(".form"), item); } let data = [{text: "a"},{text: "b"},{text: "c"},{text: "d"}]; $(".grid").kendoGrid({dataSource: data, selectable: true, change: change}); </script></body></html><div data-role="window" id="ImportPNRCreditCardPricingSettlementWindow" data-animation="false" data-title="Card Details" data-modal="true" data-visible="false" data-bind="visible: isCreditCardCRUDWindowVisible, events:{open: OnImportPNRCreditCardWindowOpened}"> <div data-role="grid" id="ImportPNRCreditCardGrid" data-editable='{"mode" : "popup", "confirmation" : "Are you sure you want to delete this Item?"}' data-toolbar="['create']" data-columns='[ { "field": "ID",hidden: true }, {"field": "lkpTypeName", hidden: true }, {"field": "CardName", title:"Name"}, {"field": "CardNumber", title:"CardNumber"}, {"field": "OriginalCardNumber", hidden: true }, {"field": "ExpiryDate", title:"Expiry Date"}, {"field": "IssuingCompany", title:"Issuing Company"}, {"field": "BillingEmail", title:"Billing Email"}, {"field": "ValidFrom", title:"Valid From"}, { command: ["edit", "destroy"], title: " ", width: "250px" } ]' data-bind="source: UserDefinedCreditCardDS" ></div>
Script:
function ImportPNRCreditcardDS() { new kendo.data.DataSource({ data: [], schema: { model: { id: "ID", fields: { ID: { type: "number" }, lkpTypeName: { type: "string" }, CardName: { type: "string" }, CardNumber: { type: "string" }, OriginalCardNumber: { type: "number" }, ExpiryDate: { type: "date" }, IssuingCompany: { type: "string" }, BillingEmail: { type: "string" }, ValidFrom: { type: "date" }, CreditCardType: { type: "string" }, CreditCardCategory: { type: "string" } } } } });}
Inside ViewModel , a property is declared:
var testVM= kendo.observable({UserDefinedCreditCardDS: function(e) { return ImportPNRCreditcardDS(); },});

Hi, I have a problem on Kendo Grid with a field that has a lot of text to show in a column only, so I thought to show it as row, as it's displayed in attached image.
The problem, is that when grouping any column, it doesn't work correctly, it's displayed in the following example.
Is there any workaround or feature about that?
<div id="grid"></div><script>$("#grid").kendoGrid({ groupable: true, columns: [ { title: "Name", field: "name" }, { title: "Birthdate", field: "birthdate" }, { title: "City", field: "city" }, { title: "Country", field: "country" }, { title: "Phone", field: "phone" }, { hidden: true, title: "Descripcion", field: "descrip" } ], editable: true, dataBound: function (e) { dataBoundGridMain(e) }, dataSource: [ { name: "Jane Doe", birthdate: new Date("1995/05/04"), city: "London", country: "UK", phone: "555-444-333", descrip: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi pretium elit in mauris laoreet molestie. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Praesent et leo tellus." }, { name: "Jhon Doe", birthdate: new Date("1997/05/04"), city: "Londo", country: "UK", phone: "555-444-356", descrip: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi pretium elit in mauris laoreet molestie. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos." }, { name: "Jhon Doe", birthdate: new Date("1997/05/04"), city: "New York", country: "USA", phone: "555-444-356", descrip: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi pretium elit in mauris laoreet molestie. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos." } ]}); function dataBoundGridMain(e){ var kendoGrid = e.sender; var rows = kendoGrid.tbody.children(); var dataItem = null; var rowElement = null; var dataRowGrid = kendoGrid.dataItems(); var rowLen = dataRowGrid.length, index = 0; console.log("test") for (index; index < rowLen; index++) { rowElement = rows[index]; dataItem = dataRowGrid[index]; if (dataItem.hasOwnProperty('descrip')) { addDescriptionTextNewRow(kendoGrid, dataItem, $(rowElement)); } } } function addDescriptionTextNewRow(kendoGrid, dataItem, rowElement){ var rowsElement, title, value, colsNumber, rowRender; if (dataItem.hasOwnProperty('descrip')) { title = 'Description'; value = dataItem.descrip; } colsNumber = kendoGrid.columns.length rowsElement = "<tr><td colspan=" + colsNumber + " style= 'color:#434343; font:12px DroidBold; text-align: left; border-bottom:1px; height: 8px; padding:5px 0 0 5px;' >" + title + "</td></tr>"; rowsElement += "<tr><td colspan=" + colsNumber + " style= 'color:#434343; font:Arial 10px; text-align: left' >" + value + "</td></tr>"; rowRender = $(rowsElement); rowElement.after(rowRender[1]); rowElement.after(rowRender[0]); } </script>
Hi , i am new to KendoGrid and have few questions . could you please provide your valuable input on this as i am not able to find the correct solution for below.
#1 - I am aware of custom validation , but is it possible to attach on-fly pattern check while editing the cell value , if the value doesn't match with pattern the value should be discarded automatically similar to inbuilt numeric check when we define type=numeric and try to provide character.
#2 - i need some conversion while editing , such as lowercase to uppercase OR expand abbreviation such as 1k to 1000 ( k stand for 1000) . where i need to place this logic . Editor or Edit event ?

data-columns='[{"field": "SettlementType", template: kendo.template($("\\#ImportPNRSettlementTypeTemplate").html()), editor: viewModel.ImportPNRSettlementTypeEditor, title: "Settlement Type" }]'Hi,
I run the demo from https://demos.telerik.com/aspnet-mvc/grid/editing-popup and having error: System.ArgumentException: 'Value cannot be null or empty.
Parameter name: name. It was during the first initial (controller not hit). MVC 5 application.
If I change GridEditMode.PopUp to GridEditMode.InCell or InLine then Grid works fine. Is it some setup problem? Is there any scripnt needs to be included in bundle in case of GridEditMode.PopUp?
Here is the Grid code:
@(Html.Kendo().Grid<OnTargetInv.Models.EmailAddress>()
.Name("GridEmails")
.Columns(columns =>
{
columns.Bound(p => p.Email);
columns.Bound(p => p.EmailAddressID).Width(140).Hidden();
//columns.Bound(p => p.InactiveDate).Width(140);
columns.Command(command => command.Destroy()).Width(150);
})
.ToolBar(toolbar => toolbar.Create())
.Editable(editable => editable.Mode(GridEditMode.PopUp))
.Pageable()
.Sortable()
.Scrollable()
.HtmlAttributes(new { style = "height:550px;" })
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(20)
.Events(events => events.Error("error_handler"))
.Model(model => model.Id(p => p.EmailAddressID))
.Create(update => update.Action("EditingPopup_Create", "Client"))
.Read(read => read.Action("EditingPopup_Read", "Client"))
.Update(update => update.Action("EditingPopup_Update", "Client"))
.Destroy(update => update.Action("EditingPopup_Destroy", "Client"))
)
)
Thanks.

Hello,
https://dojo.telerik.com/@alexy99/acOsisiF
On Add task sometimes I get below, sometimes: Maximum call stack exceeded. As per below post I tried defaultValue for parentId but no go.
https://www.telerik.com/forums/error-when-the-data-type-of-the-id-and-parentid-to-string
Uncaught TypeError: Cannot read property 'data' of undefined
at init.setup (kendo.all.min.js:27)
at init.create (kendo.all.min.js:27)
at Object.<anonymous> (kendo.all.min.js:28)
at Function.Deferred (jquery-1.12.3.min.js:2)
at init._promise (kendo.all.min.js:28)
at init._send (kendo.all.min.js:28)
at init.sync (kendo.all.min.js:27)
at init._syncDataSource (kendo.all.min.js:85)
at init._createTask (kendo.all.min.js:84)
at init.r (kendo.all.min.js:84)

Hello,
I am using a kendo UI dropdownlist bound using remote data. I have followed the example using the no data template to add a new item using the text entered on search. However, I am now wondering if it is possible to customise the no data template so that when adding a new item it's possible to capture more information that just the item value i.e. the text from search fields. I would be aiming to display a few text fields and use these to insert data on the back end. I tried adding them however the text fields seem to be disabled and I'm not sure where I've gone wrong or if it's possible?
Many thanks
$('<div />').kendoWindow({ content: 'http://google.com', iframe: false, modal: true}).data('kendoWindow').center();