Hello,
I am doing a Django project and am creating a base.html that will be used in different pages using {% extend 'base.html'%}.
The base.html includes a Drawer and a TileLayout with only one tile (filter tile: this tile contains search filter components like datepicker, groupbutton, checkbox etc).
Then I have a file named main.html where I need to add several tiles underneath the filter tile from base.html
I was able to add several tiles to main.html but the problem is, it is not included in the Drawer component of base.html. The tiles I've added on main.html appears below the height scope of base.html
I need to include the tiles from main.html into the same Drawer of base.html
I have been trying to figure this out for several days now but is unfortunately have not found a solution. If anyone could assist, it would be really helpful.
Thank you.
Hi
In my example - http://dojo.telerik.com/exaBa - I am looking for an event which lets me detect when a user drags the column but does not reorder it...
In other words: the user drags the column outside the grid - intention to delete (hide) that column.
I am aware that I can use the column menu, but that creates a button (that is not floating) and uses too much space (I have a lot of columns in my grid so I need all the space I can get)
columnMenu: {
sortable: false
}
Many thanks
I am trying to implement kendo autocomplete and I am new to Kendo. When the user enters a character query is taken and a list is made using the database and returned to the view. Everything works fine except when the first character is typed search box loses its focus and I need to click on the search box again to type more characters. For some reason also other buttons gets doubled pic below
Here is my code
$("#query").keyup(e => {
e.preventDefault();
if (e.keyCode === 13) {
$("#btnSearch").click();
}
let ds = new DataServices(`${bc.apiBaseUrl}TrendStations/SearchAutoComplete`);
let xhr = ds.GetData({ query: $("#query").val() });
$('#query').attr('autocomplete', 'CUSTOM');
xhr.done((results) => {
if (results != null) {
var data = results;
$("#query").kendoAutoComplete({
dataSource: data,
filter: "startswith",
placeholder: "Enter your search here...",
separator: ", "
});
} else {
window.location.reload();
}
}).fail(ex => {
new ErrorHandler().HandleError(ex);
});
});
I have looked for an answer but no luck! anybody knows what is going on?
I have a kendo grid with a column that is not displayed in the grid, but is conditionally included when exporting to excel.
However, this column is positioned as the last column in the sheet, instead of being positioned as defined in the grid column definition.
I have no idea what the issue may be.
Any help will be greatly appreciated.
This is the method by which I am conditionally including the column in the excel export:
excelExport: (e: kendo.ui.GridExcelExportEvent) => {
if (columnShouldShow) {
e.sender.showColumn('MyColumn');
e.preventDefault();
columnShouldShow = false;
setTimeout(() => {
e.sender.saveAsExcel();
});
} else {
e.sender.hideColumn('MyColumn');
columnShouldShow = true;
}
}
Hi,
I have been testing what's the best way to create custom theme swatches, so that they're easy to maintain between Kendo upgrades.
Is it possible somehow to use theme variables inside the json file (of the swatch)?
Here is an example, where I try to use "$component-border" to set border color for tabs:
When running "npm run sass:swatches", it gives me error message: "Error: Undefined variable: "$component-border"."
It works if I hard code the color like this:
"name": "Tabstrip",
"variables": {
"tabstrip-item-border": {
"name": "Tabstrip item border color",
"type": "color",
"value": "#fc0303"
}
}
How can I set value programmatically to a cell in Treelist from javascript after the data is loaded?
Say I have quantity and price, I need to update the total amount column when I change value quantity or price.
I have a grid with the drag and drop feature and locked columns. I have a need for the row to be dragged up and down in the grid. I found an article on your site but it does not really work, even in your own Dojo. It only allows dragging to the top and should allow dragging anywhere. It doesn't leave a gap on the unlocked side of the table as would be expected. I would like it to clone the existing row and use that as a placeholder on both sides of the grid. Also, the column widths are not preserved.
Below is a link to the article: https://docs.telerik.com/kendo-ui/knowledge-base/grid-drag-drop-with-locked-columns
Update:
Here is some code that I currently have which fixes the issue with the column widths and the dragging to the top only. It doesn't address the issue with the placeholders though.
function enableKendoGridLockedDND(gridElement) {
if (!gridElement) {
gridElement = ".k-grid";
}
let grid = $(gridElement).data("kendoGrid");
if (!grid.lockedTable) {
return false;
}
let gridWidth = $(gridElement).width();
let lockedWidth = $(gridElement).find(".k-grid-header-locked").width() || 0;
let unlockedWidth = $(gridElement).find(".k-grid-header-wrap table").width() || 0;
let tableWidth = lockedWidth + unlockedWidth + 2;
grid.lockedTable.kendoSortable({
axis: "y",
filter: ">tbody >tr",
hint: function(element) {
var unlockedPortion = grid.table.find("tr[data-uid=" + element.data("uid") + "]").children();
let table = $(`<div style="overflow: hidden; width: ${gridWidth}px;"><table style="background: whitesmoke; width: ${tableWidth}px;" class="k-grid k-widget"></table></div>`);
let colgroups = $(gridElement).find(".k-grid-header colgroup");
let colgroupWidths = [];
$.each(colgroups, function (index, group) {
$.each($(group).children(), function (index2, child) {
colgroupWidths.push($(child).css("width"));
});
});
table.find("table").append(element.clone().append(unlockedPortion));
$.each(table.find("td"), function (index, col) {
$(col).css("width", colgroupWidths[index]);
});
console.log(table);
table.css("opacity", 0.7);
return table;
},
cursor: "move",
placeholder: function (element) {
return element.clone().css({
"opacity": 0.3,
"border": "1px dashed #000000"
});
// console.log("placeholder", element);
// var unlockedRow = grid.table.find("tr[data-uid=" + element.data("uid") + "]");
// var unlockedPortion = unlockedRow.children();
// console.log(element);
// return element;
// // return $(`<tr class="w-100 grid-placeholder" style="background: green;"><td>Hello World</td><td></td><td></td></tr>`);
},
//move: function (e) {
// let event = e.draggableEvent;
// console.log("event", event);
// let item = e.item;
// let itemUID = $(item).data("uid");
// console.log("UID", itemUID);
// console.log("item", item);
// let unlockedDraggingRow = grid.table.find("tr[data-uid=" + item.data("uid") + "]").children();
// console.log(unlockedDraggingRow);
// console.log("clone", unlockedDraggingRow.clone());
// let target = e.target;
// let unlockedTargetRow = grid.table.find("tr[data-uid=" + target.data("uid") + "]");
// $(gridElement).find("tr.d-none").removeClass("d-none");
// $(gridElement).find("#dragPlaceholderRow").remove();
// $(grid.table.find("tr[data-uid=" + target.data("uid") + "]")).before(`<tr id="dragPlaceholderRow"><td colspan="6">Yo!</td></tr>`);
// $(unlockedTargetRow).addClass("d-none");
//},
end: function (e) {
let skip = grid.dataSource.skip() || 0;
let newIndex = e.newIndex + skip;
let dataItem = grid.dataSource.getByUid(e.item.data("uid"));
grid.dataSource.remove(dataItem);
grid.dataSource.insert(newIndex, dataItem);
},
change: function(e) {
let skip = grid.dataSource.skip() || 0;
let newIndex = e.newIndex + skip;
let oldIndex = e.oldIndex + skip;
let data = grid.dataSource.data();
let dataItem = grid.dataSource.getByUid(e.item.data("uid"));
console.log("skip", skip);
console.log("newIndex", newIndex);
grid.dataSource.remove(dataItem);
grid.dataSource.insert(newIndex, dataItem);
}
});
}
Here is what the change event returns:
action: "remove"
draggableEvent: {originalEvent: MouseEvent, type: 'mouseup', target: span.k-icon.k-i-reorder, currentTarget: fn.init(1), isDefaultPrevented: ƒ, …}
isDefaultPrevented: Æ’ ()
item: fn.init [tr.k-alt.k-master-row]
newIndex: -1
oldIndex: 1
preventDefault: Æ’ ()
sender: init {element: fn.init(1), _events: {…}, options: {…}, draggable: init, draggedElement: fn.init(1), …}
_defaultPrevented: false