Telerik Forums
UI for ASP.NET Core Forum
3 answers
1.9K+ views

I have this form:

@*Some form fields here that accept startDate and endDate*@
 
<div>
    <button id="searchButton">Search</button>
</div>
<div class="col-md-12 row">
    @(Html.Kendo()
            .Grid<ProjectName.DataModels.Models.Customer>()
            .Name("CustomerGrid")
            .Columns(columns =>
            {
                columns.Bound(e => e.CustomerId);
                columns.Bound(e => e.SomeCustomerColumn);
            })
            .ClientDetailTemplateId("OrderDetails")
            .AutoBind(false) // Don't load the data yet because I'll need to supply parameters for the fetch
            .DataSource(dataSource => dataSource
                        .Ajax()
                        .Events(events=>events.Change("loadChildGrid"))
                        .PageSize(20)
                        .Model(model => model.Id("CustomerId", typeof(string)))
                        .Read(read => read.Action("GetCustomersAsync", "Customer").Data("passArguments"))
            )
    )
 
    <script id="OrderDetails" type="text/kendo-tmpl">
        @(Html.Kendo()
                .Grid<ProjectName.DataModels.Models.Order>()
                .Name("OrderDetails_#=CustomerId#")
                .Columns(columns =>
                {
                    columns.Bound(o => o.ProductName);
                    columns.Bound(o => o.SomeOrderColumn);
                })
                .DataSource(dataSource => dataSource
                            .Ajax()
                            .PageSize(10)
                            .Model(model=>model.Id("OrderId"))
                            .ServerOperation(false)
                )
                .AutoBind(false)
                .ToClientTemplate()
        )
    </script>
</div>
  
<script type="text/javascript">
    $("#searchButton").on("click", function () {
        // Load the customerGrid here:
        $("#CustomerGrid").data("kendoGrid").dataSource.read();
    });
     
    function passArguments() {
        var startDate = $("#startdate").data("kendoDatePicker").value();
        var endDate = $("#enddate").data("kendoDatePicker").value();
        return {
            start: startDate,
            end: endDate
        }
    }
     
    // QUESTION: How to load the child grid: OrderDetails_123 by using datasource from the parent grid?
    // THIS IS WHAT I'VE TRIED SO FAR:
    function loadChildGrid() {
        var parentData = $("#CustomerGrid").data("kendoGrid").dataSource.data();
        //Initialize the  child grid
        $.each(parentData, childDataFeeder);
    }
     
    function childDataFeeder(index, item) {
        var childGridName = "#" + "OrderDetails_" + item.CustomerId;
        var childGrid = childGridName.data("kendoGrid");
        childGrid.dataSource.data(value.Orders)
    }
</script>

And a method in the Customer controller:

public async Task<ActionResult> GetCustomersAsync([DataSourceRequest] DataSourceRequest request, DateTime start, DateTime end)
{
    var customersWithOrders = GetDataForParentAndChildGrid(start, end);
    return Json(consolidatedData.ToDataSourceResult(request));
}
 
private List<Customer> GetDataForParentAndChildGrid(DateTime start, DateTime end)
{
    var testData = new List<Customer>();
    // Gets required data with those dates filter and perform some mathematical calculations
    testData.Add(new Customer
    {
        CustomerId = "123",
        SomeCustomerColumn = "Blah blah",
        Orders = new List<Order>()
        {
            new Order{
                OrderId = "123ABC",
                CustomerId = "123",
                SomeOrderColumn = "Blah Blah Blah"
            }
        }
    });
    return testData;
}

My goal is to set the 'dataSource' of child grid using data that is already available from the main grid. What I've tried so far is that I have attached 'Change' event to the main grid which fires 'loadChildGrid' function where I try to extract the data from main grid and pass every item of it to a 'childDataFeeder' function to initialize the 'dataSource' of child grid. The issue here is that when it tries to do that, the child grid doesn't exist yet (because it's not created by Kendo until a user clicks on the expand icon in the main grid).
You can see what I've tried so far in the 'childDataFeeder' method(without any success). So I'd greatly appreciate your direction on this.
Thank You!

Nikolay
Telerik team
 answered on 28 Dec 2020
4 answers
191 views

I have a controller for which the "Index" view just shows a row of data from a model collection. When the "Details" link is selected at any row, I switch to a "Details" page for the same controller with the following tabs:

General: Showing details for the selected model

Contacts: Showing address and phone data for the same model

etc.

The issue I have is that upon selecting the Contacts tab, I need to get data loaded from my model suitable for that tab and I don't know how to affect it.

I have something like this (gleaned after hours of searching:)

tabstrip.Add().Text("Contact").LoadContentFrom("EditContact", "HouseholdController", new { id = Model.Facility_Id }).Selected("@Model.tab" == "Contact");

but that doesn't do anything when I select the tab. I'm at a loss.

The HouseholdController has the following method:

        public ActionResult EditContact()
        {
            var model = db.GetWithFacility_Id(1);
            return View(model);
        }

I am grateful for any guidance. I'm a total beginner here.

Misho
Telerik team
 answered on 25 Dec 2020
1 answer
98 views

tabStrip.insertAfter({
            text: 'xxx',
            encoded: false,
            id: "xxxxxxxxx",
            content: "<iframe style='border-width:0px;height:calc(100vh - 68px);width:100%;overflow:hidden' src='"+url+"'></iframe>",
        }, tabStrip.select());

id can not be set.!!!!

 

Misho
Telerik team
 answered on 25 Dec 2020
7 answers
404 views

Hello,

Could you update your librairies to ASP.NET Core 3.0 GA (instead of 3.0 RC1) because there are some version conflicts when I want to install some nuget packages. For example, If I install the packages Telerik.UI.for.AspNet.Core 2019.3.917 and Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation 3.0.0 in my project, I've get the error :

Error NU1107 - Version conflict detected for Microsoft.CodeAnalysis.Common.
 
MyProject -> Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation 3.0.0 -> Microsoft.CodeAnalysis.Razor 3.0.0 -> Microsoft.CodeAnalysis.Common (>= 3.3.0)
 
MyProject -> Telerik.UI.for.AspNet.Core 2019.3.917 -> Microsoft.CodeAnalysis 3.0.0 -> Microsoft.CodeAnalysis.CSharp.Workspaces 3.0.0 -> Microsoft.CodeAnalysis.Common (= 3.0.0)
Misho
Telerik team
 answered on 25 Dec 2020
3 answers
721 views

I have a aspnet core grid that currently has the following code set to select the current row:

.Events( events => events.Change("onRowSelect"))

 

The function works fine and is written as:

function onRowSelect(e) {
        var row = this.dataItem(this.select());
       .... do work here
)

 

The users have added a new requirement that the event must be a doubleclick event and I'm not sure how to proceed.  Any help would be appreciated.

Thanks

Plamen
Telerik team
 answered on 25 Dec 2020
1 answer
315 views

I have this form:

<div align="center">
    <div>
        <button type="button" class="searchButton" id="search">Search</button>
    </div>
    <div class="col-md-12 row">
        @(Html.Kendo()
                .Grid<ProjectName.DataModels.Models.Customer>()
                .Name("CustomerGrid")
                .Columns(columns =>
                {
                    columns.Bound(e => e.CustomerId);
                    columns.Bound(e => e.SomeCustomerColumn);
                })
                .Sortable()
                .Pageable()
                .Scrollable()
                .Filterable()
                .ClientDetailTemplateId("OrderDetails")
                .HtmlAttributes(new { style = "height:430px;" })
                .AutoBind(false) // Don't load the data yet because I'll need to supply parameters for the fetch
                .DataSource(dataSource => dataSource
                            .Ajax()
                            .PageSize(20)
                            .Read(read => read.Action("GetCustomersAsync", "Customer"))
                )
                .Events(events => events.DataBound("dataBound"))
        )
 
        <script id="OrderDetails" type="text/kendo-tmpl">
            @(Html.Kendo()
                    .Grid<ProjectName.DataModels.Models.Order>()
                    .Name("OrderDetails_<#= CustomerId #>")
                    .Columns(columns =>
                    {
                        columns.Bound(o => o.ProductName);
                        columns.Bound(o => o.SomeOrderColumn);
                    })
                    .DataSource(dataSource => dataSource
                                .Ajax()
                                .PageSize(10)
                    )
                    .AutoBind(false)
                    .Pageable()
                    .Sortable()
                    .ToClientTemplate()
            )
        </script>
    </div>
</div>
 
<script type="text/javascript">
 
    function dataBound() {
        this.expandRow(this.tbody.find("tr.k-master-row").first());
    }
 
    $("#searchButton").on("click", function () {
        var startDate = $("#startdate").data("kendoDatePicker").value();
        var endDate = $("#enddate").data("kendoDatePicker").value();
 
        // How to load the customerGrid here by sending over the startDate and endDate? They are set from Kendo Date Pickers.
        // How to load the child grid: OrderDetails_123 by using the datasource used by the parent grid?
 
    });
</script>

 

And a method in the 'Customer' controller:

public async Task<ActionResult> GetCustomersAsync([DataSourceRequest] DataSourceRequest request, DateTime start, DateTime end)
{
    var consolidatedData = GetDataForParentAndChildGrid(start, end);
    return Json(new[] { consolidatedData }.ToDataSourceResult(request));
}
private ConsolidatedDataModel GetDataForParentAndChildGrid(DateTime start, DateTime end)
{
    var testData = new List<CustomerData>();
    // Gets required data with those dates filter and does a lot of mathematical calculations on them
    testData.Add(new CustomerData
    {
        CustomerId = "123",
        SomeCustomerColumn = "Blah blah",
        Orders = new List<OrderData>()
        {
            new OrderData{
                OrderId = "123ABC",
                CustomerId = "123",
                SomeOrderColumn = "Blah Blah Blah"
            }
        }
    });
    var consolidatedData = new ConsolidatedDataModel()
    {
        Data = testData
    };
    return consolidatedData;
}

 

After I click the "Search" button (which will take into account the start and end date fields to fetch the data), I'd like to update the 'dataSource' for the parent grid and the child grid. As you can see, the data I need for the parent grid already has data that I need for the child grid so I cannot do a new action call to populate the child grid. How do I accomplish this?

Please help.

Thank You!

 

 

 

 

Nikolay
Telerik team
 answered on 24 Dec 2020
1 answer
347 views
I have an ASP.NET Core (.NET 5) project open in Visual Studio 2019 (16.8.3) but when I try to convert it to a Telerik Project, I receive the following error. What's the best way to solve this?

Failed to execute command.

System.NullReferenceException: Object reference not set to an instance of an object.
   at Telerik.KendoUI.ASP.NET.Core.VSX.Wizards.ConvertWizard.GetPropertyValue(String propertyName)
   at Telerik.VSX.WizardEngine.Controls.WizardControlBase.PopulateCollectedValues(IPropertyDataDictionary gatheredData)
   at Telerik.VSX.WizardFramework.Pages.DynamicPageController.GetData()
   at Telerik.WizardFramework.Wizard.GetCurrentPageData()
   at Telerik.WizardFramework.Wizard.UpdateNavigation()
   at Telerik.WizardFramework.Wizard.EnsureInitialized()
   at Telerik.VSX.WizardEngine.ScenarioManagement.ScenarioDefinitionExecutor.CreateWizard(IWizardContext wizardControlContext, IDispatcher dispatcher, IWizardUI ui)
   at Telerik.VSX.WizardEngine.ScenarioManagement.ScenarioDefinitionExecutor.CollectData(IDispatcher dispatcher)
   at Telerik.VSX.WizardEngine.ScenarioManagement.ScenarioDefinitionExecutor.CollectData()
   at Telerik.VSX.ProjectManagement.StreamlinedProjectConfiguration.LaunchWizard(ProjectConfigurationType options)
   at Telerik.VSX.ProjectManagement.StreamlinedProjectConfiguration.LaunchWizard(ProjectConfigurationType options, PrepareWizardDelegate prepareWizardDelegate, CheckPrerequisitesDelegate checkPrerequisites)
   at Telerik.KendoUI.ASP.NET.Core.VSX.ProjectConfigurators.StreamlinedProjectConfiguration.StartConvertWizard()
   at Telerik.KendoUI.ASP.NET.Core.VSPackage.CommandExecutor.Execute(UInt32 commandId)
   at Telerik.VSX.VSPackage.PackageBase.CommandCallback(Object sender, EventArgs e)
Nikolay Mishev
Telerik team
 answered on 23 Dec 2020
3 answers
433 views
     I can only create 2.0 and 2.1 projects for some reason. I've just downloaded and installed VS 2019 (with ASP.NET Core) and Telerik (using the Progress Control Panel) and it won't let me create a 3.1 project.
Dimitar
Telerik team
 answered on 22 Dec 2020
1 answer
365 views

Hi,

  I am able to bind the form to a view model, but I want to add some extra text or image between fields, is it possible?

 

Thanks,
Wesley

Ivan Danchev
Telerik team
 answered on 21 Dec 2020
1 answer
125 views

On this page:

https://www.telerik.com/aspnet-core-ui/listbox

There is a See Demo button that references this link:

http://demos.telerik.com/kendo-ui/listbox/index

 

This link is incorrect as it brings me to the "Kendo UI for JQuery".  Instead, I expect it to bring me to the aspnet core demos

https://demos.telerik.com/aspnet-core/listbox/templates

 

This is quite confusing.

Eyup
Telerik team
 answered on 21 Dec 2020
Narrow your results
Selected tags
Tags
+? more
Top users last month
Cynthia
Top achievements
Rank 1
Iron
Toby
Top achievements
Rank 3
Iron
Iron
Iron
Danielle
Top achievements
Rank 1
Iron
Iron
Joel
Top achievements
Rank 3
Bronze
Bronze
Iron
yw
Top achievements
Rank 2
Iron
Iron
Iron
Want to show your ninja superpower to fellow developers?
Top users last month
Cynthia
Top achievements
Rank 1
Iron
Toby
Top achievements
Rank 3
Iron
Iron
Iron
Danielle
Top achievements
Rank 1
Iron
Iron
Joel
Top achievements
Rank 3
Bronze
Bronze
Iron
yw
Top achievements
Rank 2
Iron
Iron
Iron
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?