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
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
Below are screen shots of:
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
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
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....
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.
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?
.Timezone("Etc/UTC")
)
Thank you.
Chandrasiri
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>"
}
}
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
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?