I'm looking to add custom rules to a masked textbox and there is not enough documentation or examples to explain how this works properly.
$(this).kendoMaskedTextBox({
mask: "mm/dd",
rules: {
mm: "any number between 01 - 12",
dd: "any number between 01 - 31"}})
I attempted to use a masked date picker, but it still allows for entries like "48/99" which is incorrect.
Is it possible to do something like this using custom rules and regex?
var HDS = new kendo.data.HierarchicalDataSource({ error: raiseAjaxErrorWindow, transport: { read: { url: HDS_URL, dataType: "jsonp" }
}, schema: { model: { id: "id", hasChildren: "hasChildren", data: "data" } }});
$("#treeview").kendoTreeView({
dataSource: HDS,
dataTextField: "text",
dragAndDrop: false,
select: onSelect,
expand: onExpand,
collapse: onCollapse
}); 

I'm very excited to see the birth of this new component. Does the component support drag & drop. My use case would be to have a tilelayout dashboard area to which I would like to drag & drop new items from a side toolbar.
Looking at the reference, it doesn't seem that this component currently support dynamic changes (add/remove) at all. Is that right? And if so, is it on the roadmap?
Best regards,
Ron

I have the following code to present a confirmation to the user but I am not sure how to close it ..
kendo.confirm("Are you sure that you want to Update the System Cache? (<strong>Recommended<strong>) </br></br> If Yes do not navigate away from this page")
.then(function () {
$('body').addClass('waiting');
$('html,body').css('cursor', 'wait');
$('btnUpdateCache').addClass('disabled');
kendoConsole.log("Updating cache data please wait");
kendoConsole.log("Do not navigate away from this page");
$('#console-log').show();
CLOSE IT HERE <<<<<
updateSystemCache();
}, function () {
//kendo.alert("You chose to Cancel action.");
});
Given that code how would I close it?

Hi,
I implemented datasource filtering on my gantt (for jquery) widget which includes filtering of elements by start and end date. In terms of filtering logic, everything works fine, but this introduced interesting behaviour with my gantt. After any action (update of tasks via drag-n-drop for example), gantt is focused to the beginning of filter interval.
I did some debugging and I came to piece of code in kendo library (displayed below) which seems to be cause of the problem.
Is there any way to prevent this focusing, because it doesn't make much sense to scroll there if i change task somewhere in the middle of range.
Thank you
_render: function (tasks) { var view = this.view(); var range = this._range(tasks); var date = view.options.date; this._tasks = tasks; view.range(range); view.renderLayout(); view.render(tasks); if (date) { view._scrollToDate(date); }

I have create a kendo grid with batch editing using https://demos.telerik.com/kendo-ui/grid/editing for reference (using your demo service as suggested for my controller: https://github.com/telerik/kendo-ui-demos-service/blob/master/demos-and-odata-v3/KendoCRUDService/Controllers/ProductsController.cs).
The grid will read the data fine, but when I go to create the controller is unable to deserialize the "models" passed to it (as detailed in the parameterMaps function). After reading through various Telerik threads, I have tried ensuring editing mode is set to "incell" and ensuring batch mode is set to true.
Do you know what I'm doing wrong that's stopping the data from binding?
Kendo grid
<div id="grid"></div> <script> $(document).ready(function () { var crudServiceBaseUrl = "/RegulationIndex", dataSource = new kendo.data.DataSource({ batch: true, transport: { read: { url: crudServiceBaseUrl + "/GetRegulations", dataType: "json", type: "GET" }, update: { url: crudServiceBaseUrl + "/UpdateRegulations", dataType: "json", type: "PUT" }, destroy: { url: crudServiceBaseUrl + "/DeleteRegulations", dataType: "json", type: "DELETE" }, create: { url: crudServiceBaseUrl + "/AddRegulations", dataType: "json", type: "POST" }, parameterMap: function (options, operation) { if (operation !== "read" && options.models) { return { models: kendo.stringify(options.models) }; } } }, pageSize: 20, schema: { model: { id: "Id", fields: { Id: { editable: false }, LastReviewedDate: { editable: false }, LastReviewedBy: { editable: false } } } } }); $("#grid").kendoGrid({ dataSource: dataSource, navigatable: true, pageable: true, height: 550, toolbar: ["create", "save", "cancel"], columns: [ { field: "Continent", width: 120 }, { field: "Area", width: 120 }, { field: "Country", width: 120 }, { field: "Service", width: 120 }, { field: "B2BOrB2C", title: "Customer Type", width: 120 }, { field: "RegulationName", title: "Regulation Name", width: 120 }, { field: "LastReviewedDate", format: "{0:dd/MM/yyyy}", width: 100 }, { field: "LastReviewedBy", width: 100 }, { command: "destroy", title: " ", width: 150 }], editable: "incell" }); }); function customBoolEditor(container, options) { $('<input class="k-checkbox" type="checkbox" name="Discontinued" data-type="boolean" data-bind="checked:Discontinued">').appendTo(container); } </script>
Controller action
[HttpPost] [ProducesResponseType(StatusCodes.Status400BadRequest)] [ProducesResponseType(StatusCodes.Status404NotFound)] public async Task<IActionResult> AddRegulations() { var logMessage = new LogMessageFactory(this.GetType().Name, MethodBase.GetCurrentMethod().DeclaringType) .LogMessage; try { var body = JsonConvert.DeserializeObject<IEnumerable<RegulationViewModel>>("models"); var gridRegulations = new List<RegulationViewModel>(); if (body != null) { if (!ModelState.IsValid) { return BadRequest(ModelState); } else { foreach (var reg in body) { RecordUserDateForRecordChange(reg); var regulation = await _webApiClientSession.RegulationsWebApiClient.CreateRegulationAsync(reg); var regulationViewModel = _mapper.Map<Regulation, RegulationViewModel>(regulation); gridRegulations.Add(regulationViewModel); } _logger.LogDebug(logMessage); return Json(gridRegulations); } } else { _logger.LogDebug(logMessage + "Failed to " + ControllerContext.HttpContext.Request.Method); return BadRequest(); } } catch (Exception e) { _logger.LogError(e, logMessage); return NotFound(); } }