Hello all,
I have two issues adding the upload widget inside the grid.
1. I am trying to create a grid with an upload widget as one of its columns and make user be able to upload a file using drag&drop functionality.
The problem is that I could select file by the select button but drag&drop functionality is not working.
Below is my source data.
html:
<div id="grid1wrapper" class="row">
<div class="col-md-12">
<div id="grid1" kendo-grid="grid1" k-options="gridOptions" k-data-source="dataSource"></div>
</div>
</div>
javascript:
$scope.gridOptions = {
height: 500,
editable: true,
resizable: true,
navigatable: true,
columns: [
{
field: 'filename',
title: 'File Name'
},
{
title: 'File',
field: 'file',
attributes: { "class": 'text-center' },
editor: $scope.fileUploader,
width: 200
},
{
command: "destroy",
title: " ",
width: 40
}]
};
$scope.fileUploader = function(container, options) {
const name = options.field;
$('<input type="file" name="'+ name +'"/>')
.appendTo(container)
.kendoUpload({
multiple: false,
localization: {
dropFilesHere: "DropFilesHere"
}
});
};
2. After upload file and click another field to fill out the data, the uploaded file disappears and I cannot save file with save button.
Any idea?
Thank you.
I am expanding and collapsing groups of columns on a button click leveraging an inline headertemplate like this example in a kendo UI grid. The table is complex with 4 core column groups, with each column groups expanding/contracting 12 columns.
I have this working functionally BUT
$("th[data-title=" + column_header + "]").show();I would love a second pair of eyes on this code groups/ungroups columns based on button click
function onExpClick(button, db_column_names, column_header) {
var span = $(button).find("span");
var grid = $("#grid").data("kendoGrid");
if (span.hasClass("k-i-minus")) {
span.removeClass("k-i-minus");
span.addClass("k-i-plus");
db_column_names.forEach(function(column_name){
grid.hideColumn(column_name.concat("_rec"));
grid.hideColumn(column_name.concat ("_action"));
grid.hideColumn(column_name.concat ( "_notes"));
});
$("th[data-title=" + column_header + "]").show();
} else {
span.removeClass("k-i-plus");
span.addClass("k-i-minus");
db_column_names.forEach(function(column_name){
grid.showColumn(column_name.concat("_rec"));
grid.showColumn(column_name.concat ("_action"));
grid.showColumn(column_name.concat ("_notes"));
});
}
};
Thank You,
Rohit
The title says it all
How to get the data item from the node in the select event?

Hello,
In the TileLayout DEMO (https://demos.telerik.com/kendo-ui/tilelayout/index, script tags are used in the html code.
We want to create the script tag with the javascript code.
For example in the demo page is written:
<script id="views-chart-template" type="text/x-kendo-template">
<div id="views-chart" style="height:100%; width:100%"></div>
</script>
When replacing this html code by the JS code :
<script>
var s = document.createElement('script');
s.id = "visitors-chart-template";
s.setAttribute('type', "text/x-kendo-template");
var d = document.createElement('div');
d.id = "visitors-chart";
d.style = "height:100%; width:100%";
s.appendChild(d);
document.getElementById("example").appendChild(s);
</script>
Then this works in Chrome and Microsoft Edge, but not in Firefox.
The HTML page is added in the appendix. When opening this in Firefox, you will see that the "Visitors" dashboard card content is not filled in. When opening this HTML page with Chrome, then the "Visitors" dashboard is okay.
Thanks in advance.
According to here: https://docs.telerik.com/kendo-ui/api/javascript/ui/grid/configuration/columns.filterable.ui
You can (for example) replace a filter input with a textarea, however, the example as shown doesn't work because it's not bound to the filter value.
It will work if you add the data-bind attribute:
$(element).replaceWith("<textarea data-bind='value:filters[0].value'></textarea>");Now the filter value actually gets passed to the server and populated when you call setOptions on the grid.
As there is no easy way to provide your own filter template, I'm trying to create a complex filter (a checkbox list for a flags enum) using replaceWith.
I have some checkboxes and use some JavaScript to set the value of an input that is bound using the data-bind attribute.
This all works fine and the filter value is passed to the backend as expected, and the input value is populated via setOptions when I reload.
For example:
$("#grid").kendoGrid({
columns: [ {
field: "flags",
filterable: {
ui: "testFilter"
}
} ],
filterable: true,
//...
});
function testFilter(e) {
$(e).replaceWith(`
<input type='checkbox' value='1' onclick='setFilterInput(this);' />
<input type='checkbox' value='2' onclick='setFilterInput(this);' />
<input type='checkbox' value='4' onclick='setFilterInput(this);' />
<input type='checkbox' value='8' onclick='setFilterInput(this);' />
<input id='filterInput' type='text' data-bind='value:filters[0].value' />
`);
}
function setFilterInput(e) {
var x = $(e).val();
var c = $(e).is(":checked");
var input = $("#filterInput");
var val = parseInt(input.val(), 10);
if (val === NaN) {
val = 0;
}
input.val(c ? val | x : val ^ x);
input.trigger("change");
}The problem is that I need to know the current filter value when the testFilter function is called, so I can check the correct checkboxes when the grid is loaded. For example, this shows an empty value, even when the filter is already set:
function testFilter(e) {
console.log("the current filter value is", $(e).val());
}I can't get the value of the filter input because it's bound after the testFilter function is called.
How can I access filters[0].value from inside the testFilter UI function?
Preferably without having to go top-down via $("#grid").data("kendoGrid") etc.
Hi,
How can i render a kendo datepicker inside a kendo script template? With the help of javascript?
here is a simple sample:
<script id="user-template" type="text/x-kendo-template">
<div id="column">
<input id="datePicker1" />
</div>
</script>
I have a grid that I'm trying to enable inline editing. Whenever I attempt to update a row error is thrown in the console. I've tried moving the editor into a separate editor with no luck. I removed the configuration column so there was just the Room displayName and the same thing happens so it is not an issue with the Multi-Select.
I am currently using Kendo UI v2021.1.330
In Chrome the error happens when the edit control loses focus and is
kendo.all.js:6566 Uncaught TypeError: Cannot read properties of undefined (reading 'data')
at init.setup (kendo.all.js:6566:106)
at init.create (kendo.all.js:6540:34)
at Object.<anonymous> (kendo.all.js:7640:42)
at Function.Deferred (jquery.min.js:2:29289)
at init._promise (kendo.all.js:7637:26)
at init._send (kendo.all.js:7663:44)
at init.sync (kendo.all.js:7395:60)
at init._change (kendo.all.js:8041:26)
at init.d (jquery.min.js:2:3873)
at init.trigger (kendo.all.js:164:37)
In Firefox the error happens when clicking update and is
function generateTemplate(configs) :string{
var arryDisplayNames = configs.map(function (a) { return a.displayName; });
var result = arryDisplayNames.join(", ");
return result;
}
let configurationDataSource = new kendo.data.DataSource({
serverFiltering: true,
transport: {
read: {
url: '/api/config',
data: function (opt) {
return {
roomId: 0
}
}
},
},
schema: {
model: {
id: "id",
fields: {
//id: { type: "number" },
displayName: { type: "string"}
}
}
}
})
let gridDataSource: kendo.data.DataSource = new kendo.data.DataSource({
autoSync: true,
transport: {
read: {
url: '/api/rooms/',
type: 'get',
dataType: 'json',
data: {
buildingid: roomBuildingId
}
},
update: {
url: '/api/rooms/',
type: 'post',
dataType: 'json'
}
},
schema: {
model: {
id: "RoomId",
fields: {
roomId: { type: 'number' },
buildingId: { type: 'number' },
displayName: { type: 'string' },
restricted: { type: 'boolean' },
isActive: { type: 'boolean' },
configurations: { type: 'object' },
owners: { type: 'object' },
}
}
}
});
let gridColumns: kendo.ui.GridColumn[] = [
{ field: "displayName", title: "Room" },
{
field: "configurations",
title: "Configurations",
editor: function (container,options) {
var input = $("<input name='Configurations' id='Configurations' >");
// append to the editor container
input.appendTo(container);
// initialize a multiselect
input.kendoMultiSelect({
dataTextField: "displayName",
dataValueField: "id",
dataSource: configurationDataSource // bind it to the brands array
}).appendTo(container);
},
template: "#= generateTemplate(configurations) #"
},
{ command: ["edit"], title: " "}
];
roomGrid = $('#rooms').kendoGrid({
dataSource: gridDataSource,
sortable: true,
groupable: true,
pageable: false,
editable: "inline",
selectable: "row",
columns: gridColumns
}).data('kendoGrid') as kendo.ui.GridHi!
When spreadsheet has may sheets and sheet bar has scroll buttons there is a problem with enter formula with link to sheet if tab of target sheet is not visible. Scrolling scrollbar stops editing mode.
To reproduce this, open dojo:
https://dojo.telerik.com/ETOsIzUP
then press "=" key (to open edit formula mode),
then press scroll right button on sheets bar (to open last sheet)
- editor mode stops and "A1" cell containts "=" char.
What is expected: possibility select any sheet in workbook to use in formula.
Kendo UI Spreadsheet 2022.1.119