Telerik Forums
UI for ASP.NET Core Forum
1 answer
141 views

Hi there

I have a grid with draggable functionality but if I enable the default sort the drag & drop won't work any more.

 

I'm setting the default sort in jquery:

grid.dataSource.sort({ field: "Id", dir: "asc" });

 

I've tried to do it in C# code but got the same results.

 

Can anyone help me with it ?

 

Thanks

Stoyan
Telerik team
 answered on 20 May 2022
1 answer
1.0K+ views

After updating a working .NET 5 project to .NET 6 and upgrading Nuget package Telerik.UI.for.AspNet.Core from 2021.2.511 to 2022.2.510, I am now receiving an error using IntegerTextBoxFor on an object property model. The error is

FileNotFoundException: Could not load file or assembly 'Microsoft.DotNet.InternalAbstractions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified.

 

Below are screen shots of:

  1.  The exception
  2.  The Nuget packages 1.) From the .NET 5 working solution and 2.) from the .NET 6 solution that crashes.
  3. The line of code that causes the exception. Note that if I bind to a simple property instead of a complex object property, the error does not happen.



Nuget Package Telerik.UI.for.AspNet.Core

The Nuget package on the left is referencing version 2021.2.511. As you can see, that version includes a reference to the file that is causing the error, which is Microsoft.DotNet.InternalAbstractions. The package on the right is referencing the latest version 2022.2.510 and that package does not include the file that is causing the error.

 


@(Html.Kendo().IntegerTextBoxFor(x => x.Product.Odometer)
    .Min(0)
    .Culture(Localizer.CultureCode)
 )

 

If this file is still a dependency of that particular Telerik package, why is it missing? And please advise on how to fix this.

Thank You,
dbeard

Mihaela
Telerik team
 answered on 20 May 2022
1 answer
252 views

We have a grid of data items that we are editing with a custom popup editor. In the popup is a dropdown list to a foreign key field. When we're editing we need the dropdown list to contain all items so that the existing values show correctly but when we're adding a new record the dropdown list must only show the items in the dropdown where the parent entity does not already have a record associated with that related entity.

So, an example scenario is we have a list of companies and a list of products and some companies have discounts for certain products - a separate company discount table. We navigate to a view with a grid of discounts for a chosen company. In the list of company discounts there is a foreign key to the product. When an edit of one of these discount records is performed the popup opens and the dropdown is populated with all products and the dropdown is made readonly. When a new "discount" record is added, the popup opens and it needs to filter the dropdown items to just those products where the company doesn't already have a discount. We have all the controller code deriving the correct data but we have an issue. When the popup opens for an edit the dropdown data source "read" action executes but at that point in time the id of the parent object hasn't been initialised so it always looks like we are adding a new record - the id is showing as 0. We've added an additional call to the datasource.read on document.ready effectively forcing it to derive the data twice and that then populates the dropdown successfully but it no longer seems to be bound to the field as the current value is not selected. Additionally, when we open the popup for a new record we need to pass in the company id which we know from the grid view but can't seem to get to populate the model object that the popup is bound to. I've searched the web and forums and so far not managed to find a matching scenario. Do you have some advice on how to resolve these issues?

Thanks in advance

Alexander
Telerik team
 answered on 20 May 2022
2 answers
181 views
How do I print from the image editor?  To open a broader discussion... do I need to pull the image then wrap it in a PDF in order to print?  If so, how?
Aleksandar
Telerik team
 answered on 20 May 2022
0 answers
117 views

Keep in mind that I am new to .Net Core 6.0, ASP.Net and the newest Telerik tools!  I have very little experience with js and Razor but am learning quickly!

With that said:  I would like to create an input form for collecting search information.  I have created a slide out window from the right side...  I just can't find a good example of how to add input objects to the form!  Any suggestions of research documents would be greatly appreciated!

 

Current Html & js defining form:

 <div id="dialog"></div>

 $("#dialog").kendoWindow({ title: "IVM - Search Engine", 
                                   width: "40%", 
                                   height: "85%", 
                                   actions: [ "close" ], 
                                   draggable: false, 
                                   resizable: false, 
                                   modal: true, 
                                   position:{ top: 75, left: "50%" }, 
                                   //content: { url: "Address/getTypes",
                                   //           dataType: "json",
                                   //           iframe: false }
                                   //item:{ kendoComboBox:{name:"cmbaddressTypes", dataSource:@AddressTypes.addressTypes }}
                                   animation: { open: { effects: "slideIn:left", duration: 500 }, 
                                                close: { effects: "slideIn:left", reverse: true, duration: 500 } }, 
                                   visible: false })

The AppBar declaration placing the search button on the bar.

 @(Html.Kendo().AppBar()
        .Position(AppBarPosition.Top)
        .PositionMode(AppBarPositionMode.Fixed)
        .Name("appbar")
        .Items(items=> {
            items.Add().Template("<a class='k-button k-toggle-button k-button-flat-base k-button-flat k-button-md k-rounded-md k-icon-button' href='\\#'><span class='k-icon k-i-menu'></span></a>").Type(AppBarItemType.ContentItem);
            items.Add().Type(AppBarItemType.Spacer).Width("16px");
            items.Add().Template("<h3>International Vending Machines</h3>").Type(AppBarItemType.ContentItem);
            items.Add().Type(AppBarItemType.Spacer).Width("800px");
            items.Add().Template("<a class='k-button k-search-button k-button-flat-base k-button-flat k-button-md k-rounded-md k-icon-button' href='\\#' id='openWindow'><span class='k-icon k-i-search'></span></a>").Type(AppBarItemType.ContentItem);
        })
        .Deferred()
    )

and finally, the delegate and event:

        $("#appbar").on("click", ".k-search-button", function (e) { IVMSearch(e); })

    <script>
        function IVMSearch(e)
        { var dialog = $("#dialog").getKendoWindow();
          dialog.open(); }

    </script>

The behavior is:  when the search button is clicked, this kendoWindow slides out from the right side and this is where I want the user to enter their search criteria.  I need kendoCombobox, kendoText, kendoButton and kendoLabel objects on this slide out....  

Alan
Top achievements
Rank 2
Iron
Iron
 asked on 19 May 2022
0 answers
222 views

Using the Multiselect works great but the delete icon for the items overlay the text. In trouble shooting this, if I remove the "k-multiselect" class from the div wrapping the the Multiselect, it looks fine. I don't think I am missing a stylesheet but is the a way to exclude/remove this class by a configuration or am I doing something wrong? 

I have attached a screenshot of the displayed Multiselect and the html wrapping the Multiselect when it is generated.

Bob
Top achievements
Rank 1
 asked on 19 May 2022
1 answer
91 views

Hi,

May I know, Is there any way to group scheduler by using a property that declared in the ViewModel without using and declaring resources as below?

 

@(Html.Kendo().Scheduler<Kendo.Mvc.Examples.Models.Scheduler.MeetingViewModel>()
    .Name("scheduler")
    .Date(new DateTime(2013613))
    .StartTime(new DateTime(201361370000))
    .Height(600)
    .Views(views =>
    {
        views.DayView();
        views.WeekView(weekView => weekView.Selected(true));
        views.MonthView();
        views.TimelineView();
    })

    .Timezone("Etc/UTC")

 

    .Group(group => group.Resources("RoomId"))
    
    .DataSource(d => d
            .Model(m =>
            {
                m.Id(f => f.MeetingID);
                m.Field(f => f.Title).DefaultValue("No title");
                m.RecurrenceId(f => f.RecurrenceID);
            })
            .Read("Grouping_Horizontal_Read""Scheduler")
            .Create("Grouping_Horizontal_Create""Scheduler")
            .Destroy("Grouping_Horizontal_Destroy""Scheduler")
            .Update("Grouping_Horizontal_Update""Scheduler")
    )

)

 

Thank you.

Chandrasiri


Mihaela
Telerik team
 answered on 18 May 2022
1 answer
154 views

I am trying to disable my edit and delete commands conditionally. I have found a couple of resources on these forums but none of them work in me scenario. I attempted to use the .Visible() function of the command cell; however, this approach is throwing an error in the browser console. So, I went a different direction and used the .Template() for my command. This is also not working because I am not getting the data item for the row in my template handler. Here is where I am at.


@(Html.Kendo().Grid<DocumentVM>()
        .Name("Documents")
        .Columns(columns =>
        {
            columns.Bound(f => f.Title)
                .ClientTemplate("<a href='" +
                    Url.Action("DisplayFile", "Documents") + "/#=Id#' target='_blank'><i class='k-icon #:FileIcon#'></i> #=Title#</a>"
                );
            columns.ForeignKey(f => f.DocumentTypesId, (System.Collections.IEnumerable)ViewData["DocTypes"], "Id", "Description");
            columns.Bound(f => f.CreatedDate).Title("Date Uploaded");
            columns.Bound(f => f.CreatedBy).Title("Uploaded By");
            columns.Command(command => {
                command.Edit().Template("#= EditableTemplate(data) #");
                command.Destroy().Template("#= DeleteTemplate(data) #");
            });
...
)


function EditableTemplate(data) {
    if (data.Editable) {
        return "<a role='button' class='k-button k-button-icontext k-grid-edit' href='#'><span class='k-icon k-i-edit'></span>Edit</a>"
    }
    else {
        return "<a role='button' class='k-button k-button-icontext k-grid-edit k-state-disabled' href='#'><span style='color: green;' class='k-icon k-i-check'></span>Edit</a>"
    }
}

function DeleteTemplate(data) {
    var currentUser = $("#CurrentUser").val();
    var userIsAdmin = $("#UserIsAdmin").val();

    if (data.Editable === true && currentUser === data.CreatedBy) {
        return "<a role='button' class='k-button k-button-icontext k-grid-delete' href='#'><span class='k-icon k-i-close'></span>Delete</a>"
    }
    else {
        return "<a role='button' class='k-button k-button-icontext k-grid-delete k-state-disabled' href='#'><span class='k-icon k-i-close'></span>Delete</a>"
    }
}
How can I access the row data item in my template handlers for commands?
Stoyan
Telerik team
 answered on 18 May 2022
1 answer
129 views

I have just updated some of my code to 2022 R2 and believe I have found a bug. It is not control specific as it is related to the DataSource and the way it generates urls.

In my code I have controllers and views within a MVC Area (Areas in ASP.NET Core | Microsoft Docs )

Up to now it worked fine and the below sample would end up generating a url that used the ambient area when generating the url

.Read(read => read.Action("Transactions_Read", "Transactions").Data("transreaddata"))

This would produce: /Admin/Transactions/Transactions_Read

Now since R2 2022 it will not use the ambient Area. Thus it will produce: /Transactions/Transactions_Read

 

Current workaround would be to add an area route value in for each url.  If one has lots of datasources where that would be necessary that could be a bit time consuming. May be classified as a breaking change

 

Doing some debugging on it with the actual telerik source code I have found the problem

In file NavigatableExtensions.cs with the function GenerateUrl (line 160)

The below was added between R1 2022 and R2 2022

 

object area;
            if (navigatable.HasValue() && navigatable.RouteValues != null && !navigatable.RouteValues.TryGetValue("area", out area))
            {
                navigatable.RouteValues.Add("area", "");
            }

Effectively, if you rely on using ambient values, you do not create a route value called "area". Thus the TryGetValue fails and causes the code to adda blank area route value which will override the ambient value

 

Mihaela
Telerik team
 answered on 18 May 2022
1 answer
110 views

Hey,

Let's say that I have a ListView with comments:


@(Html.Kendo().ListView<Adelante_ERP_GSBK.Models.ProjectComment>()
                    .Name("listView")
                    .TagName("div")
                    .ClientTemplateId("template")
                    .HtmlAttributes(new {style = "border: none;"})
                    .DataSource(dataSource => dataSource
                        .Ajax()
                        .Read(read => read.Action("GetComments", "ProjectComment", new {projectId = Model.Id}))
                    ))

Template


<script type="text/x-kendo-tmpl" id="template">
<div class="post">
    <div class="user-block" style="margin-bottom: 0;">
        <span class="username" style="display: inline; margin-left: 10px;">
            #:User.Name#
        </span>
        <span class="description" style="display: inline; margin-left: 5px">
            #:kendo.toString(CommentDate, "d")#
        </span>
        <a onclick="showInPopup('@Url.Action("AddOrEdit", "ProjectComment", null, Context.Request.Scheme)/#:Id#', 'Edit')" style="cursor: pointer;" title="Dodaj">
            <i class="fa-solid fa-pen-to-square"></i>
        </a>
        <a onclick="showInPopup('@Url.Action("Delete", "ProjectComment", null, Context.Request.Scheme)/#:Id#', 'Delete?')" style="cursor: pointer;" title="Usuń">
             <i class="fa-solid fa-xmark"></i>
        </a>
    </div>
    <div style="margin-left: 10px;">
        #:CommentContent#
    </div>
</div>
</script>

Everything works fine, but I don't want that all users always see edit/delete buttons.

Edit button should be visible only for author and administrator, delete only for administrator.

 

Does anyone have an idea how can I do this?

Stoyan
Telerik team
 answered on 16 May 2022
Narrow your results
Selected tags
Tags
+? more
Top users last month
Anislav
Top achievements
Rank 6
Silver
Bronze
Bronze
Jianxian
Top achievements
Rank 1
Iron
Marco
Top achievements
Rank 3
Iron
Iron
Iron
Jim
Top achievements
Rank 2
Iron
Iron
Nurik
Top achievements
Rank 2
Iron
Iron
Want to show your ninja superpower to fellow developers?
Top users last month
Anislav
Top achievements
Rank 6
Silver
Bronze
Bronze
Jianxian
Top achievements
Rank 1
Iron
Marco
Top achievements
Rank 3
Iron
Iron
Iron
Jim
Top achievements
Rank 2
Iron
Iron
Nurik
Top achievements
Rank 2
Iron
Iron
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?