Hi,
I am Kamal Hinduja based Geneva, Switzerland(Swiss). Can anyone share their experience How to implement custom cell templates with Kendo UI Vue?
Hi,
I’m using Kendo UI Scheduler for Vue in day view.
I need to control the order of overlapping events (e.g. show isPrivate=true events to the right side, and public ones to the left).
Right now, I can sort my eventList in Vue before passing it to the Scheduler, but the rendered order is not respected. The Scheduler seems to:
Render events by start time first.
Then order them internally by duration (longer events get positioned to the left, shorter ones to the right).
If two events share the same start time, the order is taken from an internal index, not from my sorted data.
This results in long, all-day or multi-hour events always being drawn first (on the left), pushing shorter events to the right — even if my sorted array has the shorter events first.
My question:
👉 Is there a built-in way to disable duration-based sorting of overlapping events in the Scheduler, or to explicitly control the rendering order of events (e.g. by a custom field like isPrivate)?
I already tried:
Sorting the data source before binding.
Using custom templates (eventTemplate, dayTemplate).
But the layout order still follows Scheduler’s internal logic.
Any guidance or workaround (config, event hook, or customization point) would be appreciated!
Thanks!
<link rel="preload" href="https://kendo.cdn.telerik.com/2021.1.119/js/kendo.all.min.js" as="script"/>
https://kendo.cdn.telerik.com/2021.1.119/js/kendo.all.min.js
This is the Code
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MassEditVCR.aspx.cs" Inherits="NGC.Web.Application.MassEditVCR" %>
<%@ Import Namespace="NGC.Language" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title><%=NGC.Language.LM.GetString("LBL_MASS_EDIT_VCR")%></title>
<%--<meta id="dataTableName" name="dataTableName" content="productionorder" runat="server" />--%>
<meta id="securityID" name="securityID" content="60316" runat="server" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="preload" href="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js" as="script"/>
<link rel="preload" href="https://unpkg.com/@progress/kendo-vue-intl@2.7.3/dist/cdn/js/kendo-vue-intl.js" as="script"/>
<link rel="preload" href="https://unpkg.com/@progress/kendo-vue-grid@1.2.0/dist/cdn/js/kendo-vue-grid.js" as="script"/>
<link rel="preload" href="https://kendo.cdn.telerik.com/2021.1.119/js/kendo.all.min.js" as="script"/>
<link rel="preload" href="https://unpkg.com/@progress/kendo-vue-excel-export@1.2.0/dist/cdn/js/kendo-vue-excel-export.js" as="script"/>
<link rel="preload" href ="https://unpkg.com/@progress/kendo-theme-default@4.43.0/dist/all.css" as="style" />
<link rel="stylesheet" href="https://unpkg.com/@progress/kendo-theme-default@4.43.0/dist/all.css" />
</head>
<body>
<div id="sg1">
<div id="maintoolbar" data-ngc-toolbartable="productionorder" data-ngc-role="toolbar">
<div class="section">
<h1><%=NGC.Language.LM.GetString("LBL_MASS_EDIT_VCR")%></h1></div>
<div class="defaults noPrint">
<input type="button" name="btn_boxtoggle" id="btn_boxtoggle" title="Collapser" value="Collapser" class="noPrint btncollapse BtnLayoutIcon BtnActive BtnIconExpand" @click="toogleExpandedRows" >
<button @click="save" class="k-button BtnLayoutIconText BtnIconSave DoPost"><%=NGC.Language.LM.GetString("LBL_SAVE")%></button>
<button @click="saveAndSubmit" class="k-button BtnLayoutIconText BtnIconSave DoPost"><%=NGC.Language.LM.GetString("LBL_SAVE_SUBMIT")%></button>
<button @click="refreshData" class="k-button BtnLayoutIconText BtnIconCancel DoPost"><%=NGC.Language.LM.GetString("LBL_CANCEL")%></button>
<div class="custombutton">
<button @click="loadRecords" class="k-button BtnIconDownload BtnLayoutIconText DoPost" id ="loadRecords"><%=NGC.Language.LM.GetString("LBL_LOAD_MORE")%></button>
<button @click="exportExcel" class="k-button BtnIconFileExcel BtnLayoutIconText"><%=NGC.Language.LM.GetString("LBL_EXPORT_EXCEL")%></button>
<button id="btn_configure" @click="configure" class="k-button BtnIconConfigure BtnLayoutIconText" style="display: none;"><%=NGC.Language.LM.GetString("LBL_SELECT_COLUMNS")%></button>
</div>
</div>
</div>
<div id="toolbarSeparator"></div>
<div class="otheritems">
<NGC:Field ID="view" Label="LBL_VIEW" runat="server" IsDisabled="true" DataSource="viewname" Validation="ReadOnly" />
</div>
<kendo-grid :style="{height: '600px', width: '100%'}"
id="renderedData"
:data-items="gridData"
:cell-render="cellFunction"
:row-render ="rowRender"
:resizable="true"
:pageable="true"
:skip= "skip"
:take="take"
:total="total"
:sortable="true"
:sort= "sort"
:selectable="true"
:selected-field="selectedField"
:filter="filter"
:filterable="true"
:groupable="{footer: 'visible'}"
:group= "group"
:expand-field="'expanded'"
:columns = "columns"
:edit-field="'inEdit'"
:reorderable="true"
@columnreorder="columnReorder"
@datastatechange="dataStateChange"
@selectionchange="onSelectionChange"
@headerselectionchange="onHeaderSelectionChange"
@expandchange="expandChange"
@pagechange="pageChangeHandler"
>
<template v-slot:myreasonCell="{props}">
<td>
<div :data-item="props.field" v-if="props.rowType !== 'groupFooter'" class="field" data-ngc-hint="search" :class="classObject(props)">
<input data-ngc-datatype="text" :value="props.dataItem[props.field]" v-on:change="setDataFields(props, event)" />
<span v-on:click="openSearch(props)"> </span>
</div>
</td>
</template>
<template v-slot:checkboxCell="{props}">
<td>
<div :data-item="props.field" v-if="props.rowType !== 'groupFooter'" :class="classObject(props)">
<input type="checkbox" data-ngc-datatype="bit" :value="props.dataItem[props.field]" :checked="props.dataItem[props.field]" @change="setDataFields(props, event)"/>
</div>
</td>
</template>
<template v-slot:textareaCell="{props}">
<td>
<div :data-item="props.field" v-if="props.rowType !== 'groupFooter'" class="field" :class="classObject(props)">
<textarea class="font" data-ngc-datatype="text" cols="60" rows="4" style="height: 50px; min-width: 200px; width: 100%;" :value="props.dataItem[props.field]" v-on:change="setDataFields(props,event)"></textarea>
</div>
</td>
</template>
<template v-slot:dateCell="{props}">
<td>
<div :data-item="props.field" v-if="props.rowType !== 'groupFooter'" class="field " data-ngc-hint="datepicker" :class="classObject(props)" >
<input type="text" :id="(props.dataIndex === -1 ? props.dataItem.value : props.dataIndex) + props.field" maxlength="10" :value="setFieldValue(props,'date')"
data-ngc-datatype="date" v-on:change="setDataFields(props ,event)">
<span data-ngc-role="datepicker" v-on:click="__NGCdatepickerMethods.callDatePicker((props.dataIndex === -1 ? props.dataItem.value : props.dataIndex) + props.field)"> </span>
</div>
</td>
</template>
<template v-slot:intCell="{props}">
<td>
<div :data-item="props.field" v-if="props.rowType !== 'groupFooter'" class="field " data-ngc-datatype="int" :class="classObject(props)">
<input type="number" :value="props.dataItem[props.field]" min="0.0000" max="1000000000.0000" data-ngc-role="field"
data-ngc-validation="Number" data-ngc-datatype="number" v-on:change="setDataFields(props ,event)" ></div>
</td>
</template>
<template v-slot:moneyCell="{props}">
<td>
<div :data-item="props.field" v-if="props.rowType !== 'groupFooter'" class="field " data-ngc-datatype="money" :class="classObject(props)">
<input type="number" data-ngc-datatype="money" :value="props.dataItem[props.field]" min="0.0000" max="1000000000.0000" data-ngc-role="field"
data-ngc-validation="Number|Decimal|Money" step="0.0001" data-ngc-precision="4" v-on:change="setDataFields(props ,event)" ></div>
</td>
</template>
<grid-toolbar>
<button @click="copy(event)" class="k-button BtnLayoutIconText BtnIconCopy DoPost"><%=NGC.Language.LM.GetString("LBL_COPY")%></button>
<div class="checkBox">
<input type="checkbox" v-model="filterModifiedRow" @change="showModifiedRows(event)"/><label id="label_showModifiedRow" for="showModifiedRow"><%=NGC.Language.LM.GetString("LBL_FILTER_MODIFIED_LINES")%></label>
</div>
<div class="freezefields"><input type="number" id="freezedcolumns" name="freezedcolumns" v-model="freezeColumns" min="0.0000" max="1000000000.0000" @change="updatefreezeColumns(event)" data-ngc-validation="Number" step="any" data-ngc-precision="0" title="4" class="">
</div>
<div class="labelBox"><label id="label_freezefields" for="freezefieldscolumn"><%=NGC.Language.LM.GetString("LBL_FREEZE_COLUMNS")%></label></div>
<div class="inputFilter customfilter ">
<input id="filter_filterobj" name="filter_criteria" type="text" v-model="searchWord"><input id="dashboarditems_clear" type="button" class="inputClearButton" @click="searchClear()" value="Clear">
</div>
</grid-toolbar>
</kendo-grid>
<input type="hidden" id="productionOrderIDJSON" runat="server" />
<input type="hidden" id="quantityreasoncodes" runat="server" />
<input type="hidden" id="condition" runat="server" />
<input type="hidden" id="isrequirefactorycommentsvcr" runat="server" />
</div>
<script src="https://unpkg.com/@progress/kendo-vue-intl@2.7.3/dist/cdn/js/kendo-vue-intl.js"></script>
<script src="https://unpkg.com/@progress/kendo-vue-grid@1.2.0/dist/cdn/js/kendo-vue-grid.js"></script>
<script src="https://kendo.cdn.telerik.com/2021.1.119/js/kendo.all.min.js"></script>
<script src="https://unpkg.com/@progress/kendo-vue-excel-export@1.2.0/dist/cdn/js/kendo-vue-excel-export.js"></script>
<NGC:SearchResults runat="server" ID="ngcsearchresult" />
</body>
</html>This error is coming in the console
The main kendo script is referencing a youtube.api interface, this is the reason the control will not work in China. We will need help to get support from Telerik to see if it is possible to customize the main script by removing all references to "youtube", and also to find out if we can distribute the script under the licensing terms (we would have to include the script in our Web/scripts folder - not import from the Telerik source).
Please give me some guidance and help to resolve that issue
First off: I know they are discontinued, not looking for support on them, this is a migration question
I'm investigating the possibility of migrating from vue2 to vue3 on our CMS, we have a bunch of vue2 kendoui vue2 wrapper widgets.
I have loaded the vue3 compat script and the widgets seem to still load (albeit with the warnings in the console). But will the continue to work if I fully move to vue3 or do they only work in the context of vue2.
I am using Vuejs 2.x.
I am trying to use the dropdowntree to display a large hierarchy.
I am also trying to use the ValueMapper to pre load the checked items.
The problem I have is that the valueMapper is not being called until I start clicking on nodes.
How to I get the valueMapper to check the correct nodes when the page is rendered?
Here is my code:
<body>
<input id="dropdowntree">
<script>
$(document).ready(function () {
var localData = [
{ id: 1, text: "Parent 1", items: [
{ id: 2, text: "Child 1.1" },
{ id: 3, text: "Child 1.2" }
]},
{ id: 4, text: "Parent 2", items: [
{ id: 5, text: "Child 2.1" },
{ id: 6, text: "Child 2.2" }
]}
];
var dropDownTree = $("#dropdowntree").kendoDropDownTree({
placeholder: "Select an item...",
dataSource: {
data: localData,
schema: {
model: {
id: "id",
children: "items",
fields: {
id: { type: "number" },
text: { type: "string" }
}
}
}
},
loadOnDemand: {
//THIS IS NOT CALLED UNTIL I START CLICKING NODES
valueMapper: function (options) {
var value = options.value;
var item = localData.find(function (dataItem) {
return dataItem.id == value;
});
options.success(item ? [item.id] : []);
}
},
dataTextField: "text",
dataValueField: "id",
//value: [2,5], //SETTING THIS DID NOT HELP
checkboxes: true,
checkAll: true,
autoClose: false
});
dropDownTree.value = [5]; // Trying to manually set value and call the valuemapper
});
</script>
</body>
I am using Vue.js 2.x and Kendo controls.
Currently we are using the Kendo dropdowntree control to display hierarchy data.
Our control allows:
-1 or more items to be selected
-Also, once the data is saved, if the record is edited later, the dropdowntree will check each item that was previously checked.
-The properties we set in the dropdowntree:
:data-source="items"
tagMode="single"
:autoClose="false"
:checkboxes-check-children="checkChildren"
:check-all="true"
:placeholder="placeholder"
dataTextField="text"
dataValueField="id"
@change="onChange"
:value="selectedItems"
style="width: 100%"
height="400px"
:load-on-demand="false"
The problem we have is that we have a scenario where a large hierarchy is being returned from the API with over 2000 rows.
This is causing the dropdowntree to take a long time to populate the control.
Is there a recommended way for the dropdowntree to handle large amounts of data?
Is there another control that can handle large amounts of data and display the data like the dropdowntree?
Is there another recommended way to display a hierarchy dropdown that acts like the dropdowntree?


Hello, I am using the DatePicker component from the @progress/kendo-vue-dateinputs package.
I am trying to update the value of the date picker in a unit test using vue-test-utils.
I have tried the following, which is how I would ordinarily update input values:
const input = wrapper.find('input[id="my-date-field"]');
endDateInput.setValue('01/01/2025');
await nextTick();
endDateInput.trigger('change');
await nextTick();
This does seem to update the value, but does not update it correctly.
A snapshot of the markup after setting the value this way shows that it appears to set the year based on the last 2 digits of the new value, but not correctly, and it is also missing the dd/mm parts:
<input role="combobox"class="k-input-inner" id="my-date-field" value="dd/mm/0025" etc...>Is there a way in which I can update the date picker value correctly?
I appreciate that the calendar popup is appended to <body>, so setting the value using that programatically is not possible, but any way of being able to update the input value is fine.
Happy to provide a minimal repro if required.
Hello,
I'm currently using Vue 3 with Kendo UI Grid for Vue (version 4.3.3).
My grid has Multiple columns and Multi-headers.
However, when I scroll horizontally, the data columns are not displayed correctly.
They either appear misaligned or are not rendered properly.
Could you please advise how to resolve this issue?
Any help would be greatly appreciated.
Thank you.
The project requires marking activities dates , so I want to highlight the corresponding event dates in the calendar component by displaying them with a red background. Are there any relevant methods for this?
I've checked the customization options in the documentation:
- The `CalendarCell` method only allows selecting dates within the current month and cannot select dates from other months.
- The `slot` method does not support selecting dates, months, or years.
Is there another way to achieve this?