Currently using Telerik.DataSource.QueryableExtensions.CreateDataSourceResult() results in queryable.Count() + queryable.Skip(...).Take(...). done seperatelly. EF Core specific tests are already present it seems, based on decompiled code, I can see: "if (!sort.Any() && queryable.Provider.IsEntityFrameworkProvider())".
Request: Add support for other ORM's that are more capable than EF Core. In case of pagination, window-function could be used to save from extra count query. A short sample bellow:
var dbResults = await queryable
.Select(x => new {
Item = x,
TotalCount = Sql.Ext.Count().Over().ToValue()
})
.Skip(() => offset)
.Take(() => limit)
.ToListAsync();
var count = dbResults.FirstOrDefault()?.TotalCount ?? 0;
var items = dbResults.Select(x => x.Item);
Read more about Window functions: https://statics.teams.cdn.office.net/evergreen-assets/safelinks/1/atp-safelinks.html
<TelerikGrid
@ref="GridRef"
TItem="T"
Pageable="true"
Sortable="true"
Groupable="true"
FilterMode="Telerik.Blazor.GridFilterMode.FilterRow"
Resizable="true"
Reorderable="true"
Height = "auto"
PageSize="@PageSize"
OnRead=@ReadData>
...
</TelerikGrid>
Hi
I am trying to do very simple InCell editing of various columns string etc. In my model i have various Decimal? types fields. When i update the grid incell the
OnUpdate event fires but the property value is always null. Its like its not biding properly. Seems like you have had similar to this bug in previous versions. Seems like a very simple functionality that the grid should support.
Also it doesn't allow me to enter more than 1 digit after this also as if i type a decimal point it jsut clears it.
I have added a video showing this behaviour.
Please assist. This is the Grid code below.
@if (_stockOrderLinePOCO != null)
Hi,
When we use the TelerikDropDownList with a large amount of data (client side) in Blazor, the dropdown takes several seconds to open the popup. (*)
Even with the most simple version of the TelerikDropDownList component:
<TelerikDropDownList Data=@Logic.LuNacebelCodes
TextField="DisplayName"
ValueField="Id"
@bind-Value=@dto.Party.LuNacebelCodeId
Filterable="true" FilterOperator="@StringFilterOperator.Contains">
<DropDownListSettings>
<DropDownListPopupSettings Height="200px" />
</DropDownListSettings>
</TelerikDropDownList>
But isn't it strange the same dropdownlist in Kendo for jQuery (AngularJS) with exactly the same dataset, doesn't react slow and opens on the fly..?
Is the DOM manipulation in Blazor that much slower then?
(*) We know Virtualization fixes this problem, but it has some limitations.
Thanks in advance.
Normally, when we develop we try to give a homogeneous behavior to our applications for the user.
This is a uncomfortable when the default behavior of our application does not match those of the Telerik controls because it becomes verbose and repetitive. I look at my code and constantly repeat configurations for the different controls.
For example, in 99% times I use:
<TelerikGrid EditMode="GridEditMode.Inline" />
or
<GridColumn ShowFilterCellButtons="false" TextAlign="ColumnTextAlign.Center" />
{
"TelerikGrid.EditMode": "GridEditMode.Inline",
"GridColumn.ShowFilterCellButtons": false,
"GridColumn.TextAlign": "ColumnTextAlign.Center"
}
<GridCommandColumn Width="90px">
<div class="text-center">
<GridCommandButton Command="Edit" Icon="@SvgIcon.Pencil" />
<GridCommandButton Command="Delete" Icon="@SvgIcon.Trash" />
<GridCommandButton Command="Save" Icon="@SvgIcon.Save" ShowInEdit="true" />
<GridCommandButton Command="Cancel" Icon="@SvgIcon.Cancel" ShowInEdit="true" />
</div>
</GridCommandColumn>
Changing "Delete" icon in the whole application seems trivial, but think that you could modify the default behavior homogeneously in the whole application or in part of it if the configuration file had a hierarchical behavior, changing one properpty in one place.
I think it would be a very useful functionality to give homogeneity to an application in a very effective way, without breaking changes and making a less verbose and repetitive code.
Thank you for reading me !
Hi Support Team,
in our project we are using Telerik Chart and has required to update theme of chart from dark to light and light to dark.
telerik chart in child razor page and dark/light button in mainlayout.razor file but telerik chart updating theme when click on button exist telerik chart razor page. as below link it is an existing issue.
please advice how to resolve the issue.
Right now, when calling the ToDataSourceResult extension method on IQueryable object, the DB is queried using the given filters for example from a DataSourceRequest object. However, if I want to apply complex queries based on those filters, this is not possible unless rewriting the existing extension method to return an IQueryable.
Proposal Example API
var dataSourceRequest = new DataSourceRequest();
DataSourceResultWithQuery dataSourceResultWithQuery = query.ToDataSourceResultWithQuery(dataSourceRequest);
public class DataSourceResultWithQuery : DataSourceResult
{
[JsonIgnore]
public IQueryable query { get; set; }
}
Is it possible for this to be added as an extension method? I am currently doing this using a custom class that parses the dataSourceRequest class and returning the IQueryable, but it would be nice if this was an included extension method.
Thank you.
Hi,
During grid initialization I have duplicate OnReadMethod call. I dynmaically set LoadGroupsOnDemand parameter. When LoadGroupsOnDemand is false and when I skip the second call (I shouldn't do any extra logic to calculate the call number anyway) it works fine. If LoadGroupsOnDemand is true I have to call it twice. With early ending of first call, second OnRender call won't be done. If I do "return" at the begining of second call it returns me an empty grid.
Similar issue to this one: https://feedback.telerik.com/blazor/1442276-onread-called-twice-on-initialization
Is it possible to allow the adding of aria-label, aria-labelledby, and aria-describedby to the TelerikForm element?
I noticed that aria-labelledby and aria-describedby were added to input elements here: https://feedback.telerik.com/blazor/1531788-allow-setting-aria-labelledby-and-aria-describedby-attributes-to-the-telerik-inputs - so I assume they could be added to TelerikForm too?
Currently, there doesn't seem to be a way to add those attributes, whereas with the default EditForm we can, and so we're unable to leverage the TelerikForm if we want to provide better descriptive information to non-sighted users with a label and description of the form.
Ideally, we should be able to render any HTML element with global attributes: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes , which would include any of the aria-* tags.
I understand there's a desire to have a locked-down API for components and not allow arbitrary attributes, but I think certain attributes core to accessibility the users of the library should have some ability to manipulate.
Hi,
I do not think this is a feature yet I am adding it here, so won't put pressure on developers. The problem is that when I add a TelerikGrid inside a TelerikTabStrip it does not adjust well to changes of browser resizing. I have made different ways, like making the siez 100% or dynamic sizing and changing CSS, but each of them may break something. It would be crucial for us if the grid would change well to changes in TelerikTabStrip when its width property is 100%.
Thank you
Hi!
Would it be possible to expose a focus in/out (or similar) functionality for the Treeview? We currently use the component for eyebrow navigation menus, and it would be nice to have the ability to close trees when the user clicks somewhere else. We've tried doing an onclick for the body of the site, which works but also interferes with other clicks on the page. Thanks!
Hi Team,
I was implemeting the approach mentioned in the below URL in my Blazor .Net Project
https://github.com/telerik/blazor-ui/tree/master/common/pdf-jpg-export-js
But getting this error while execution, can someone please look into this or help me.
See below repl
https://blazorrepl.telerik.com/GeYodYvp135zJH7N22
The first dropdown is populated correctly, it is not in a FormItem or Template
The second one, populated in the same way but inside a FormItem context does not show the data, it only redraws and shows data when entering another control i.e. the other working dropdown.
This was previously working when the application was using .net 6 and Telerik 3.6.1
It has since been updated to .net 8 and Telerik 5.1.1
What is the correct way to populate this?
Can you provide more information?
Thanks.
It seems to me on a greenfield app where someone wants the ability to switch themes, 99% of the time they would want it site wide, not just on your components. I'd venture a guess that most of us c# .Net devs moving to Blazor, don't have Ed C and your organization's sass skills. If that were built into a template used by your Visual Studio Extension Create Project Wizard it would allow us to focus more on the business logic and probably increase adoption of Theme Builder Pro
Thanks,
Kurt
Setting the FilterDirector directly:
Setting FilterDescriptor via SearchText:
Our search box is a custom TelerikTextbox not part of the grid, but essentially the same functionality as the built-in search box.
To test, use this code:
https://docs.telerik.com/blazor-ui/components/grid/filter/searchbox#customize-the-searchbox
But add it to FilterDescriptor immediately rather than setting SearchFilter like on the link.
This is the only instance of this on our site, and all of our grids use the exact same code via a generic method, on our object that controls the grid we have a custom empty attribute to dictate whether a column should be filterable via our textbox.
If I create a <TelerikGrid> whose Data property is set to a collection of 'object' (actual type not known at compile time, only at runtime), I can create <GridColumn> components for each property through e.g.
@{
IEnumerable<PropertyInfo> props = GetModelType().GetProperties();
foreach (PropertyInfo prop in props)
{
string propName = prop.Name;
<GridColumn Field="@propName" ... />
}
}
@code {
private Type GetModelType()
{
Type modelType = ...; // code determines the type of model at runtime ...
return modelType;
}
}
This works fine if the grid's EditMode is GridEditMode.Popup. When editing a row, the popup dialog properly displays each column header and value and binds correctly.
However, this does not work if the EditMode is GridEditMode.Inline nor GridEditMode.Incell. When placing the row in edit mode, no editor control appears at all, and the value in the cell is displayed as blank.
The design of the grid component thus only works well when given a known type at compile time, or one is constrained to always use Popup edit mode due to this flaw.
In addition to a request to fix this, it would also be great if the grid could be passed a Type (a runtime type, not a class name) to use for generating columns automatically, rather than having to resort to developers having to use reflection to generate grid columns themselves.
For instance,
<TelerikGrid T="@GetModelType()" ...> should invoke the GetModelType() method which would return a type at runtime, not necessarily known at compile time. Currently T can only be set to a hard-coded type name such as "Employee".
In TreeView the selected and checked items have to be provided as IEnumerable<object>. This can make things a bit of a pain if you have for example outside events that are also trying to change the list of checked items. Not insurmountable or hard but just a pain.
For example to remove an item since IEnumerable is immutable you to have to completely re-assign the collection. SelectedItems = SelectedItems.Where[Some condition] . Instead of SelectedItems.Remove, add etc.
I realize the reasons you are binding to IEnumerable<object> and not using generics
I propose adding "CheckedField" and "SelectedField" in your observable treeview binding and then we would not have to pass in Checked / Selected Items at all and just bind those fields to the Data we are passing in. Make life a lot easier.
The same thing likely applies to some other controls that have the same problem. So keep it consistent.