Planned
Last Updated: 24 Sep 2021 13:51 by ADMIN
Scheduled for 2.28.0
When you try to group by resource with a type different of string (long, int, etc.), an "Error: System.ArgumentException: Arg_ObjObjEx" appears.
Planned
Last Updated: 22 Sep 2021 08:38 by ADMIN
Scheduled for 2.28.0

When you shrink a Grid column, ellipsis is rendered to represent the clipped text. However, at some point of resizing the Column menu and Filter menu indicators are overlapping the Grid column header text.

 

==========

ADMIN EDIT

==========

In the meantime, a possible workaround would be to use some custom CSS to add right padding to the k-link span, so it does not get overlapped by the column menu icon. That padding should be approximately as wide as the span holding the column menu icon. You can also set a custom CSS class to the Grid through its Class parameter to make sure you are styling this exact instance of the Grid and not all instances on the page/app. The example below demonstrates how to achieve the described approach.

 

 

<style>
    .my-grid .k-link {
        padding-right: 40px;
    }
</style>

<TelerikGrid Data="@MyData"
             Class="my-grid"
             Pageable="true"
             PageSize="5"
             FilterMode="@GridFilterMode.FilterMenu"
             Sortable="true"
             Resizable="true"
             ShowColumnMenu="true">
    <GridColumns>
        <GridColumn Field="@(nameof(SampleData.Id))" Width="80px" />
        <GridColumn Field="@(nameof(SampleData.Name))" Title="Employee Name"/>
        <GridColumn Field="@(nameof(SampleData.Team))" Title="Team" />
        <GridColumn Field="@(nameof(SampleData.HireDate))" Title="Hire Date" />
    </GridColumns>
</TelerikGrid>

@code {
    public IEnumerable<SampleData> MyData = Enumerable.Range(1, 30).Select(x => new SampleData
    {
        Id = x,
        Name = "name " + x,
        Team = "team " + x % 5,
        HireDate = DateTime.Now.AddDays(-x).Date
    });

    public class SampleData
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Team { get; set; }
        public DateTime HireDate { get; set; }
    }
}

 

 

Planned
Last Updated: 22 Sep 2021 06:48 by ADMIN

I am using EF on my backend and when I group I get an error like this one:

Unhandled exception rendering component: Processing of the LINQ expression '(GroupByShaperExpression:
      KeySelector: (t.FirstName), 
      ElementSelector:(EntityShaperExpression: 
          EntityType: Customer
          ValueBufferExpression: 
              (ProjectionBindingExpression: EmptyProjectionMember)
          IsNullable: False
      )
      )' by 'RelationalProjectionBindingExpressionVisitor' failed. This may indicate either a bug or a limitation in EF Core. See https://go.microsoft.com/fwlink/?linkid=2101433 for more detailed information.
System.InvalidOperationException: Processing of the LINQ expression '(GroupByShaperExpression:
KeySelector: (t.FirstName), 
ElementSelector:(EntityShaperExpression: 
    EntityType: Customer
    ValueBufferExpression: 
        (ProjectionBindingExpression: EmptyProjectionMember)
    IsNullable: False
)
)' by 'RelationalProjectionBindingExpressionVisitor' failed. This may indicate either a bug or a limitation in EF Core. See https://go.microsoft.com/fwlink/?linkid=2101433 for more detailed information.
   at Microsoft.EntityFrameworkCore.Query.Internal.RelationalProjectionBindingExpressionVisitor.VisitExtension(Expression extensionExpression)
   at System.Linq.Expressions.Expression.Accept(ExpressionVisitor visitor)

 

and a lot more line through the EF Core expression classes.

-----

ADMIN EDIT

At the moment, it looks like there is an issue between EF, LINQ and GroupBy expressions that seems to be the origin of this. In a profiler, you can see that running a group expression does not even run a query against the database itself - this is the origin of the problem, and the subsequent paging operation is where an actual exception is thrown, but it points to the field that was used for grouping.

Considering that grouping has to pull all the data anyway, materializing the data from an IQueriable to an IEnumerable should solve the issue, even though it can be a performance hit - for relatively small data sets it may not be a significant problem.

    protected override void OnInitialized()
    {
        GridData = ProductService.GetProducts().ToList();
    }

 

----

Planned
Last Updated: 22 Sep 2021 06:46 by ADMIN
Аpplication memory grows when Grid grouping occurs. After a couple minutes of running in debug mode the process memory visible in the Diagnostic tools progressively increases up to a couple gigabytes. This behavior is not reproduced when not in debug mode and monitoring in the Memory tab of the browser tools.
Planned
Last Updated: 21 Sep 2021 09:03 by ADMIN
Scheduled for 2.29.0
Created by: Jason
Comments: 0
Category: Grid
Type: Bug Report
3

Occasionally I am getting TaskCancellation errors such as:

[13:07:52 ERR] Unhandled exception in circuit 'hQsJqY3F4XbTbzQETSggJClg_e4YRyQkrKHFMHCXugM'.
System.Threading.Tasks.TaskCanceledException: A task was canceled.
   at Microsoft.JSInterop.JSRuntime.InvokeAsync[TValue](Int64 targetInstanceId, String identifier, Object[] args)
   at Microsoft.JSInterop.JSRuntimeExtensions.InvokeVoidAsync(IJSRuntime jsRuntime, String identifier, Object[] args)
   at Telerik.Blazor.Components.TelerikComboBox`2.Dispose()
   at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__140_0(Object state)
   at Microsoft.AspNetCore.Components.Rendering.RendererSynchronizationContext.ExecuteSynchronously(TaskCompletionSource`1 completion, SendOrPostCallback d, Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Components.Rendering.RendererSynchronizationContext.ExecuteBackground(WorkItem item)

 

===========

ADMIN EDIT

===========

The error is related to a Microsoft bug. It occurs one minute after some client component has been disposed.

The exceptions are not bypassed due to memory leak. The bug is expected to be fixed in .NET 6 and this will be respected for the Telerik components, so that the errors do not appear.

Planned
Last Updated: 20 Sep 2021 19:48 by ADMIN
Created by: khashayar
Comments: 7
Category: UI for Blazor
Type: Feature Request
7
hello, 
i wanted to know if it's possible to make fully rtl theme in ui for blazor or not i have been trying to make an rtl theme but i got some problems.
and also is it possible to use other types of calendar in datepicker  (like arabic calendar)? 
Planned
Last Updated: 20 Sep 2021 09:35 by ADMIN
Scheduled for 2.28.0

Stack trace:

crit: Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer[100]
      Unhandled exception rendering component: Unknown edit type: 0
      Error: Unknown edit type: 0
          at e.applyEdits (https://localhost:44363/_framework/blazor.webassembly.js:1:15008)
          at e.updateComponent (https://localhost:44363/_framework/blazor.webassembly.js:1:12880)
          at Object.t.renderBatch (https://localhost:44363/_framework/blazor.webassembly.js:1:1704)
          at Object.window.Blazor._internal.renderBatch (https://localhost:44363/_framework/blazor.webassembly.js:1:34784)
          at _mono_wasm_invoke_js_unmarshalled (https://localhost:44363/_framework/wasm/dotnet.3.2.0.js:1:172099)
          at wasm_invoke_iiiiii (<anonymous>:wasm-function[3160]:0x9b33d)
          at icall_trampoline_dispatch (<anonymous>:wasm-function[5777]:0xfe711)
          at mono_wasm_interp_to_native_trampoline (<anonymous>:wasm-function[4607]:0xca81d)
          at ves_pinvoke_method (<anonymous>:wasm-function[3209]:0x9cd40)
          at interp_exec_method (<anonymous>:wasm-function[1120]:0x2598d)
Microsoft.JSInterop.JSException: Unknown edit type: 0
Error: Unknown edit type: 0
    at e.applyEdits (https://localhost:44363/_framework/blazor.webassembly.js:1:15008)
    at e.updateComponent (https://localhost:44363/_framework/blazor.webassembly.js:1:12880)
    at Object.t.renderBatch (https://localhost:44363/_framework/blazor.webassembly.js:1:1704)
    at Object.window.Blazor._internal.renderBatch (https://localhost:44363/_framework/blazor.webassembly.js:1:34784)
    at _mono_wasm_invoke_js_unmarshalled (https://localhost:44363/_framework/wasm/dotnet.3.2.0.js:1:172099)
    at wasm_invoke_iiiiii (<anonymous>:wasm-function[3160]:0x9b33d)
    at icall_trampoline_dispatch (<anonymous>:wasm-function[5777]:0xfe711)
    at mono_wasm_interp_to_native_trampoline (<anonymous>:wasm-function[4607]:0xca81d)
    at ves_pinvoke_method (<anonymous>:wasm-function[3209]:0x9cd40)
    at interp_exec_method (<anonymous>:wasm-function[1120]:0x2598d)
  at Microsoft.JSInterop.WebAssembly.WebAssemblyJSRuntime.InvokeUnmarshalled[T0,T1,T2,TResult] (System.String identifier, T0 arg0, T1 arg1, T2 arg2) <0x3ae01e8 + 0x00046> in <filename unknown>:0 
  at Microsoft.JSInterop.WebAssembly.WebAssemblyJSRuntime.InvokeUnmarshalled[T0,T1,TResult] (System.String identifier, T0 arg0, T1 arg1) <0x3ae0108 + 0x00014> in <filename unknown>:0 
  at Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer.UpdateDisplayAsync (Microsoft.AspNetCore.Components.RenderTree.RenderBatch& batch) <0x3ae0010 + 0x0001e> in <filename unknown>:0 
  at Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessRenderQueue () <0x387e448 + 0x000f2> in <filename unknown>:0

Planned
Last Updated: 19 Sep 2021 15:41 by ADMIN
Scheduled for 3.0.0
Created by: Richard
Comments: 0
Category: Editor
Type: Feature Request
7

An event that we can hook into so that we can take the (presumably) base64 encoded image (link), upload it somewhere, and then replace it with an image element set to the uploaded imaged file. Ideally, that would work for other content too.

*** Thread created by admin on customer behalf ***

Planned
Last Updated: 19 Sep 2021 15:40 by ADMIN
Scheduled for 3.0.0
Created by: Thomas
Comments: 1
Category: Editor
Type: Feature Request
3
  • Wizard for inserting new tables
  • Drag to resize tables and columns

Similar to https://demos.telerik.com/kendo-ui/editor/index

Planned
Last Updated: 19 Sep 2021 15:32 by ADMIN
Scheduled for 3.0.0
Created by: Alan
Comments: 1
Category: Upload
Type: Feature Request
23
If I set AutoUpload=false, I have a button that starts the upload process. I would like to be able to do that with my own button.
Planned
Last Updated: 19 Sep 2021 15:31 by ADMIN
Scheduled for 3.0.0
Created by: Emran
Comments: 0
Category: Upload
Type: Feature Request
12
I want to be able to clear all successfully uploaded files in the success event, like in Kendo jQuery: https://docs.telerik.com/kendo-ui/api/javascript/ui/upload/methods/clearallfiles
Planned
Last Updated: 19 Sep 2021 15:31 by ADMIN
Scheduled for 3.0.0
Created by: Peter
Comments: 0
Category: Editor
Type: Feature Request
6
I would like to be able to add media tags in the editor, such as video, audio, iframe. 
Planned
Last Updated: 19 Sep 2021 15:20 by ADMIN
Scheduled for 3.0.0
Created by: Matthias
Comments: 2
Category: Notification
Type: Feature Request
16
I would like to have a method for the reference of the component which will allow me to close the notifications, for example - Close().
Planned
Last Updated: 19 Sep 2021 15:16 by ADMIN
Scheduled for 3.0.0
Created by: Wei
Comments: 2
Category: Tooltip
Type: Feature Request
6

How can I set the tooltip to show/hide programmatically? right not it only supports hover or click show action.

---

ADMIN EDIT

You can Follow a way to hide the tooltip programmatically here: https://feedback.telerik.com/blazor/1476364-close-tooltip-via-method.

You can find a way to hack the show event by triggering a JS click in this KB article: https://docs.telerik.com/blazor-ui/knowledge-base/common-validation-error-in-tooltip.

Here is an example that shows how you can trigger the tooltip to show for a particular target:

@inject IJSRuntime _js

<script suppress-error="BL9992">
    function triggerTooltip(index, selector, showOnClick) {
        var targets = document.querySelectorAll(selector);
        if (targets && targets.length >= index) {
            var desiredTarget = targets[index];//feel free to get the desired target in any other way
            setTimeout(function () {
                var evt = document.createEvent('MouseEvent');
                var evtToSimulate = showOnClick ? "click" : "mouseenter";
                evt.initEvent(evtToSimulate, true, false);
                desiredTarget.dispatchEvent(evt);
            }, 20);
        }
    }
</script>

<TelerikButton OnClick="@( async () => await TriggerTooltip(0) )">Trigger tooltip for the first target</TelerikButton>
<TelerikButton OnClick="@( async () => await TriggerTooltip(1) )">Trigger tooltip for the SECOND target</TelerikButton>

<TelerikTooltip TargetSelector="@ttipTargetSelector" ShowOn="@ShowOnSetting">
</TelerikTooltip>



<p id="my-targets">
    <strong title="what is 'lorem ipsum'?">lorem</strong>
    ipsum dolor
    <strong title="is this a real word?">sit</strong>
    amet.
</p>

@code{
    string ttipTargetSelector = "p#my-targets [title]";
    TooltipShowEvent ShowOnSetting { get; set; } = TooltipShowEvent.Click;
    async Task TriggerTooltip(int targetIndex)
    {
        await _js.InvokeVoidAsync("triggerTooltip", 
                targetIndex, 
                ttipTargetSelector, 
                ShowOnSetting == TooltipShowEvent.Click ? true : false
             );
    }
}

---

Planned
Last Updated: 19 Sep 2021 14:50 by ADMIN
Scheduled for 3.0.0
Created by: Alberto
Comments: 5
Category: Menu
Type: Feature Request
27

At the moment, when you click a menu item it does not hide.

A method can be exposed to hide the expanded items that can be invoked from the OnClick handler.

---

ADMIN EDIT

Here is a potential workaround - when the menu item is clicked, we use a little bit of JS to go over the menu items at the root and make the browser think that the user moved the mouse away from them which is the signal for the menu dropdowns to hide. Do test this carefully before using in production, though.

@inject IJSRuntime _js

@* Move this script together with other scripts in the project, it is here to make the snippet shorter *@
<script suppress-error="BL9992">
    function closeMenu() {
        setTimeout(function () {
            var mouseLeaveEvent = new Event('mouseleave');
            var rootNodes = document.querySelectorAll("li.k-menu-item");
            rootNodes.forEach(function (elem) { elem.dispatchEvent(mouseLeaveEvent); })
        }, 30);
    }
</script>

<TelerikMenu Data="@MenuItems"
                ItemsField="@nameof(MenuItem.SubSectionList)"
                TextField="@nameof(MenuItem.Section)"
                UrlField="@nameof(MenuItem.Page)"
                OnClick="@((MenuItem item) => OnClickHandler(item))">
</TelerikMenu>

@code {
    public List<MenuItem> MenuItems { get; set; }

    async Task OnClickHandler(MenuItem item)
    {
        await _js.InvokeVoidAsync("closeMenu");
    }



    public class MenuItem
    {
        public string Section { get; set; }
        public string Page { get; set; }
        public List<MenuItem> SubSectionList { get; set; }
    }

    protected override void OnInitialized()
    {
        MenuItems = new List<MenuItem>()
                {

            new MenuItem()
            {
                Section = "fetchdata",
                Page = "fetchdata"

            },
            new MenuItem()
            {
                Section = "counter",
                Page = "counter"
            },

// sample URLs for SPA navigation
new MenuItem()
{
    Section = "Company",
    SubSectionList = new List<MenuItem>()
                        {
        new MenuItem()
        {
            Section = "Overview",
            Page = "fetchdata"
        },
        new MenuItem()
        {
            Section = "Events",
            Page = "fetchdata"
        },
        new MenuItem()
        {
            Section = "Careers",
            Page = "counter"
        }
    }
},
// sample URLs for external navigation
new MenuItem()
{
    Section = "Services",
    SubSectionList = new List<MenuItem>()
                        {
        new MenuItem()
        {
            Section = "Consulting",
            Page = "counter"
        },
        new MenuItem()
        {
            Section = "Education",
            Page = "fetchdata"
        }
    }
},
new MenuItem()
{
    Section = "Contact",
    Page = "counter"
}
};

        base.OnInitialized();
    }
}

---

Planned
Last Updated: 19 Sep 2021 14:21 by ADMIN
Scheduled for 3.0.0
Created by: Andrew
Comments: 2
Category: ComboBox
Type: Feature Request
14

I would like to change the text in the ComboBox dropdown when there is no data in the source collection.

At the moment the only option is through localization for all instances like here.

Planned
Last Updated: 19 Sep 2021 14:04 by ADMIN
Scheduled for 3.0.0
Created by: Timothy J
Comments: 1
Category: NumericTextBox
Type: Feature Request
2

Can NumericTextBox Format Be Updatedat run time?  In other words, if numerictextbox is being used for dimensions and the user changes the preferred dimensional unit from "centimeters" to "inches" can the Format be changed from "0.## cm" to "0.## in" at runtime?

Same applies if I want to dynamically change the Decimals or Step values. Currently it looks like a dynamic change in the NumericTextBox parameters is not possible.

---

ADMIN EDIT

Here is a workaround that re-initializes the component:

 

<TelerikButton OnClick="@ChangeFormat">Change format</TelerikButton>
<br />
The value is: @theValue
<br />
@if (isVisible) {
<TelerikNumericTextBox Format="@theFormat" Max="5m" Min="-5m" Step="0.33m" @bind-Value="@theValue"></TelerikNumericTextBox>
}
@code {
    private decimal theValue { get; set; } = 1.234m;
    string theFormat { get; set; } = "0.## cm";

    bool isVisible { get; set; } = true;
    async Task ChangeFormat()
    {
        //workaround
        isVisible = false;
        await Task.Delay(30);
        await InvokeAsync(StateHasChanged);

        // change the format
        theFormat = "0.## in";

        //workaround
        isVisible = true;
        //await InvokeAsync(StateHasChanged);
    }
}

 

---

Planned
Last Updated: 19 Sep 2021 13:59 by ADMIN
Scheduled for 3.0.0
I am using a bool property to control whether the rows of the Grid would be draggable. When I try to toggle the value of this property the feature is not enabled or disabled accordingly. 
Planned
Last Updated: 19 Sep 2021 13:58 by ADMIN
Scheduled for 3.0.0

<TelerikScheduler AllowCreate="@Editing" AllowDelete="@Editing" AllowUpdate="@Editing" OnDelete="@AppointmentDelete" OnEdit="@AppointmentEdit" OnUpdate="AppointmentUpdate"  Data=…

The above line breaks only with AllowUpdate.

I default Editing false, then toggle it true in the hosting component and do a InvokeAsync(StateHasChanged). 

The result is I can create and delete, but while the appointment hover cursor changes to the hand or arrows and I can see the handlebars to resize the appointment, I'm not able to update the appointment until I switch the SchedulerView. After switching SchedulerView updating works as expected.

Planned
Last Updated: 19 Sep 2021 13:57 by ADMIN
Scheduled for 3.0.0

I want to dynamically change the TileLayout Reorderable parameter but the component does not react to that change. Dynamic change in the Resizable parameter is also not applied.

I am also trying to change the TileLayoutItem ColSpan dynamically - for example, when implementing it in a responsive layout (https://docs.telerik.com/blazor-ui/knowledge-base/tilelayout-responsive) but using a variable as the ColSpan value does nothing. The TileLayout does not react to a change in the ColSpan parameter either.

It would be nice if the TelerikTileLayout could be told to refresh itself or to refresh after some of its parameters is changed.

1 2 3 4