Previously igrid 5.0.0 introduced sortable column headers and their contents being wrapped in spans with inner cell and link classes
<span class="k-cell-inner">
<span class="k-link>......
now after upgrading to 11.2.0 it looks like ALL column headers get this additional element nesting even if they aren't sortable which is greatly affecting how column headers display since .k-link has a display: flex value. As well as many other styles.
Before
After
There are also "link" like styles applied to any and every column even if it doesn't sort giving the false impression that a column header is clickable.
This can be seen from kendo's own stackblitz for the grid https://stackblitz.com/edit/angular-lyxxa7?file=src%2Fapp%2Fapp.component.ts where if you inspect the header elements you'll see they've been wrapped in the sortable span elements. If this is intentional to wrap all column headers in we'll just have to work around it but we're curious if applying the sortable styling to ALL column headers was done on purpose or a bug.
https://stackblitz.com/edit/angular-4bbepg?file=src%2Fapp%2Fapp.component.ts
The sort indicator (down arrow) remains after removing the sort (setting the [sort] input to undefined)
Thanks,
-Adam
Given: a kendo grid with resize enabled.
And: the input locked on kendo-grid-colum is undefined (by ex. due the component class property not initialized)
When: the user double click on the column resize handler
Actual: the column width is set to 0
Expected: the colum autofit behaviour remain consistent and set the column width as usual.
I have being trying to implement the multiple row selection function but am unable to get multiple rows selected at once, even though I have multiple selected mode enabled,Is it possible to archieve this in Kendo ui grid in Angular?
Please see my function bellow. event=1 row always even though I select more one row.
if (event.length>0) {
There is a bug with the kendoGridGroupBinding directive when changing the input data and using virtual scrolling. If you have many rows and scroll down to a lower virtual page and then change the input data to a small subset the grid will think there is no data. And if you then change back to the full data set you have to start scrolling down before the grid repaints with data.
Reproduction available here https://tyb2ys--run.stackblitz.io
Steps:
1. scroll down halfway in the grid
2. click the "Show subset" button. Note the grid shows the no records message but should show three rows
3. click the "Show all" button. Now the grid shows the scrollbar and the no records message is gone but it is not showing data. You have to scroll down past where you previously were with all data before it repaints the rows
One workaround is to have an ngIf on the grid to destroy and recreate the grid when the input data changes, something like this:
Essentially the most basic GridComponent when ngIf'd in and out will not be collected -- apparently because of orientation change / resize change listeners not being appropriately removed.
Steps to Reproduce
Click the TOGGLE TABLE button to hide the table
Click the TOGGLE TABLE button to show the table
repeat several times
Take a memory snapshot
There will be HTMLTableRowElement items that grow each iteration of toggling the table.
The HTMLTableRowElements retention shows that they eventually lead to a resize listener, or an orientation change listener.
I had already made an entry in the Foum about it.
https://www.telerik.com/forums/is-there-a-way-for-percentage-column-widths
Link to the demo with the css workaround:
https://stackblitz.com/edit/angular-y8y55s
The main intention is that I want to be able to specify the column width in percentage values rather than fixed pixel values.
There are some edge cases that must be considered:
I have a Grid with a command column for edit/remove buttons.
I also have a custom button that has to be hidden while the row is being edited, but there is no variable that exposes that state.
Please provide isEdited field in the kendoGridCellTemplate context.
Hi Team,
We need to add caption on grid table as explained here: https://accessibility.psu.edu/tableshtml/#caption
JAWS should read this caption on pressing T while selecting the table.
Can you guide us how can we add this caption!
Thanks,
Saini
A built-in option for enabling a second scrollbar on the top of the Grid like the following screenshot would be nice feature to have:
Please provide a frozen column separator as the one for the WPF DataGrid:
https://docs.telerik.com/devtools/wpf/controls/radgridview/columns/frozen-columns
thank you
Please provide an [autoSync] option of the ColumnMenuChooser component as the [autoSync] option for the ColumnChooser component:
https://www.telerik.com/kendo-angular-ui/components/grid/api/ColumnChooserComponent/#toc-autosync
Thank you.
Hello Telerik,
We have implemented a custom reusable filter cell component similar to the example of the multi-select checkbox example from the docs. The difficulty using that example however, is that when the filter is updated, the other filters in the grid are removed due to the use of filterservice.filter. Because the CompositeFilterDescriptor can contain both filters and composite filters, why does the base filter cell component's base methods not allow a CompositeFilterDescriptor to be provided to the UpdateFilter method?
protected filterByField(field: string): FilterDescriptor;
protected filtersByField(field: string): FilterDescriptor[];
protected removeFilter(field: string): CompositeFilterDescriptor;
protected updateFilter(filter: FilterDescriptor): CompositeFilterDescriptor;
protected applyFilter(filter: CompositeFilterDescriptor): void;
Our method for implementing the multi-checkbox filter cell was to build a composite filter using 'Or' logic and each selected value added as a filter descriptor with operator 'eq' and the selected item value as the value of the filter, and use a similar strategy as the base filter cell component to add this composite filter to the filter service's composite filter.
private getSelectedFilters(values: Item[]): CompositeFilterDescriptor {
const selected: FilterDescriptor[] = values.map((value) => {
return {
field: this.field,
operator: 'eq',
value: value.value,
};
});
return {
filters: selected,
logic: 'or',
};
}
public onChange(values: Item[]): void {
this.selectedValues = values;
const root = this.filter || {
filters: [],
logic: 'and',
};
this.removeFilter(this.field);
if (values !== null && values.length !== 0) {
root.filters.push(this.getSelectedFilters(values));
}
this.filterService.filter(root);
}
If the base filter cell component allowed the CompositeFilterDescriptor type or the FilterDescriptor type in the updateFilters method, we could simplify the logic in our filter cell component to be similar to the patterns shown in the drop-down list filter component example, as shown below, but with a composite filter descriptor such as the one generated by the above getSelectedFilters function.
this.applyFilter(
value === null // if value of the default item
? this.removeFilter(this.valueField) // remove the filter
: this.updateFilter({
// otherwise add/modify the filter for the field with the value
field: this.valueField,
operator: 'eq',
value,
})
); // and update the root filter
I think this would be a beneficial addition to the Kendo Angular2 product, as it would enable many more reusable filter components to be created more easily and also simplify/ enhance some of the existing examples you provide. If you would like more information or the full multiselect-filter component, I would be happy to supply it.
Thank you!