Hi Team ,
In our use case we wanted a tabular view inside spanned columns cell value.
Example Structure Inside Spanned columns:
<kendo-grid-span-column [style]="{ 'padding': '0px'}">
<!-- CAPA NAME -->
<kendo-grid-column field="cName" title="CName" [width]="180">
</kendo-grid-column>
<kendo-grid-column field="cDescription" title="CDescription" [width]="180">
</kendo-grid-column>
<kendo-grid-column field="cCategory" title="CCategory" [width]="180">
</kendo-grid-column>
<kendo-grid-column field="pName" title="pName" [width]="180">
</kendo-grid-column>
<kendo-grid-column field="pValue" title="pValue" [width]="180">
</kendo-grid-column>
<ng-template kendoGridCellTemplate let-dataItem>
<tr style="height:200px"class="border-tr" *ngFor="let item of dataItem.capability">
<td class="border-td column-style-class" width=19.9%>
<p>{{ item?.cName }}</p>
</td>
<td class="border-td column-style-class" width=20.2%>
<p>{{ item?.cDescription }}</p>
</td>
<td class="border-td column-style-class" width=20%>{{ item?.cCategory }}
<span><button (click)="removeCapability(item)" kendoGridRemoveCommand>Remove</button></span>
</td>
<td style="padding:0px" >
<div style="height:300px !important;overflow-y:scroll;">
<tr *ngFor="let itemParam of item.parameters" >
<td width=50.1% class="border-td column-style-class">{{itemParam.pName}}</td>
<td [width]="460" class="border-td column-style-class">
<kendo-textbox *ngIf="itemParam.pName == 'Name' || itemParam.pName == 'InterfaceIndex' "
[style.width]="460" (change)="updateCapabilityParameters($event,itemParam,item)"
placeholder="Type your message here" [clearButton]="true" [value]=itemParam.pValue>
</kendo-textbox>
<kendo-dropdownlist [style.width]="460"
*ngIf="itemParam.pName == 'Ingress' || itemParam.pName == 'Egress'"
[data]="listItemsIngressEgress" [value]=itemParam.pValue> </kendo-dropdownlist>
<button kendoButton [style.width]="460" *ngIf="!openedDialog && itemParam.pName == 'Alias'"
(click)="open(itemParam.pName )">Details</button>
</td>
</tr>
</div>
</td>
</tr>
</ng-template>
</kendo-grid-span-column>
But with this customization we are not able to achieve proper stylings and filters provided by kendo-grid.
</div>
Hi team,
I am working on a simple UI where kendo combo-box is a column of a kendo tree-list. The problem is, the opening and closing of kendo combo-box also expands and collapses the kendo tree-list's row.
I think the event of kendo-combo-box is bubbled to treelist. Is this a bug or am I missing something? Here's my Stackblitz example for reproducing the issue (Link: https://stackblitz.com/edit/angular-18guak?file=src/app/app.component.ts)
Thanks,
Deepak
The data is charged correctly, and the selected values are added correctly into the list.
It binds correctly when the values are already selected, but when you try to add more doesnt work. Like this:
The code is down below.
I have used the kendo tree view component with multi select check boxes.
and when I check them it will return the position of the node tree item. like below image.
My problem is how can I get the text of the selected items instead of this checked keys.
Here is my code
<div class="example-config">Checked keys: {{ checkedKeys.join(",") }}</div>
<kendo-treeview
textField="moduleName"
[nodes]="nodes"
[children]="children"
[hasChildren]="hasChildren"
kendoTreeViewExpandable
kendoTreeViewCheckable
class="k-treeview"
[(checkedKeys)]="checkedKeys"
(checkedChange)="checked(checkedKeys)"
>
<ng-template kendoTreeViewNodeTemplate let-dataItem>
{{dataItem.moduleName || dataItem.featureName}}
</ng-template>
</kendo-treeview> public checkedKeys: any[] = [];
public nodes: any[] = [
{
moduleId: 1,
moduleName: 'Home',
features: [
{
featureId: 2,
featureName: 'Orgonization',
subFeatures: [
{
featureId: 4,
featureName: 'Group Activity Solution',
subFeatures: [
{
featureId: 10,
featureName: 'Test',
subFeatures: [{
featureId: 8,
featureName: '8888888888',
subFeatures: []
}]
},
{
featureId: 11,
featureName: 'New',
subFeatures: []
},
]
},
{
featureId: 4,
featureName: 'Office of the CIO',
subFeatures: []
},
]
},
{
featureId: 3,
featureName: 'Planing',
subFeatures: [
{
featureId: 4,
featureName: 'Group Activity Solution',
subFeatures: []
},
{
featureId: 4,
featureName: 'Office of the CIO',
subFeatures: []
},
]
},
],
},
];
/**
* A function that returns an observable instance which contains the
* [child nodes](https://www.telerik.com/kendo-angular-ui/components/treeview/api/TreeViewComponent/#toc-children)
* for a given parent node.
*/
public children = (dataitem: any): Observable<any[]> =>
of(dataitem.features || dataitem.subFeatures);
/**
* A function that determines whether a given node
* [has children](https://www.telerik.com/kendo-angular-ui/components/treeview/api/TreeViewComponent/#toc-haschildren).
*/
public hasChildren = (dataitem: any): boolean =>
!!dataitem.features || !!dataitem.subFeatures;I have used the kendo tree view component with multi select check boxes.
and when I check them it will return the position of the node tree item. like below image.
My problem is how can I get the text of the selected items instead of this checked keys.
Here is my code
<div class="example-config">Checked keys: {{ checkedKeys.join(",") }}</div>
<kendo-treeview
textField="moduleName"
[nodes]="nodes"
[children]="children"
[hasChildren]="hasChildren"
kendoTreeViewExpandable
kendoTreeViewCheckable
class="k-treeview"
[(checkedKeys)]="checkedKeys"
(checkedChange)="checked(checkedKeys)"
>
<ng-template kendoTreeViewNodeTemplate let-dataItem>
{{dataItem.moduleName || dataItem.featureName}}
</ng-template>
</kendo-treeview> public checkedKeys: any[] = [];
public nodes: any[] = [
{
moduleId: 1,
moduleName: 'Home',
features: [
{
featureId: 2,
featureName: 'Orgonization',
subFeatures: [
{
featureId: 4,
featureName: 'Group Activity Solution',
subFeatures: [
{
featureId: 10,
featureName: 'Test',
subFeatures: [{
featureId: 8,
featureName: '8888888888',
subFeatures: []
}]
},
{
featureId: 11,
featureName: 'New',
subFeatures: []
},
]
},
{
featureId: 4,
featureName: 'Office of the CIO',
subFeatures: []
},
]
},
{
featureId: 3,
featureName: 'Planing',
subFeatures: [
{
featureId: 4,
featureName: 'Group Activity Solution',
subFeatures: []
},
{
featureId: 4,
featureName: 'Office of the CIO',
subFeatures: []
},
]
},
],
},
];
/**
* A function that returns an observable instance which contains the
* [child nodes](https://www.telerik.com/kendo-angular-ui/components/treeview/api/TreeViewComponent/#toc-children)
* for a given parent node.
*/
public children = (dataitem: any): Observable<any[]> =>
of(dataitem.features || dataitem.subFeatures);
/**
* A function that determines whether a given node
* [has children](https://www.telerik.com/kendo-angular-ui/components/treeview/api/TreeViewComponent/#toc-haschildren).
*/
public hasChildren = (dataitem: any): boolean =>
!!dataitem.features || !!dataitem.subFeatures;I am using Kendo UI timeline view for scheduling events in a day.
I want to provide a feature where user can clone (create a copy of) existing events and edit them as required in order to minimize their work.
I found this concept in jQuery where they are cloning events using keyboard shortcuts(https://docs.telerik.com/kendo-ui/knowledge-base/clone-events-on-ctrl-and-click) but there is no way available to do the same in Angular.
Kindly help in achieving this feature as I am new to Telerik UI.
My treeview is defined as follows:
<kendo-treeview
#treeView
kendoTreeViewExpandable
kendoTreeViewSelectable
(selectionChange)="edit($event)"
[(expandedKeys)]="expandedKeys"
textField="text"
[filter]="filterTerm"
[nodes]="keyValues$ | async"
[children]="fetchChildren"
[hasChildren]="hasChildren"
>
As the screen is opened I set the expandedKeys so that some of my nodes are by default opened, and the data is automatically loaded in.
However certain nodes have children which I would also like to load when their parent is opened, and to further complicate the matter, a different call to the server is required than the one defined in fetchChildren for fetching this data.
Is there any way I can independently load this data, not using fetchChildren and then programmatically insert it into the tree? It seems as though there isn't a way to perform a hybrid approach to data loading...

