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

Hello,

I'm trying to open a popup editor for a grid that resides inside a kendoWindow.  I can open the window and display the grid.  I can also have an "Add New" button on the grid's toolbar that works, and adds new content to the grid, however, the edit and delete buttons on each row of the grid are not clickable (nothing happens when I click them).

My grid resides inside <div> tags that I open as a kendoWindow via a JavaScript function.

function Create_Options() {
    var wnd = $("#dlgProjectOption").kendoWindow({
        title: "Add/Edit Option(s)",
        modal: true,
        visible: false,
        width: 600,
        height: 600
    }).data("kendoWindow");
 
    wnd.center().open();
}

 

Here's my grid markup:

@(Html.Kendo().Grid<OptionsCountermeasureViewModel>()
        .Name("OptCountermeasure")
        .Columns(columns =>
        {
            columns.Command(command =>
            {
                command.Edit().Text(" ");
                command.Custom(" ").Text("").Click("openRemoveWindow").IconClass("k-icon k-i-close");
            }
            ).Width(120).MinResizableWidth(49).HtmlAttributes(new { style = "text-align: center;" });
            columns.Bound(c => c.CountermeasureType).Title("Type");
            columns.Bound(c => c.Description);
        })
        .HtmlAttributes(new { style = "height: 300px; width: 100%;" })
        .Scrollable(s => s.Height("auto"))
        .Resizable(resize => resize.Columns(false))
        .Groupable(false)
        .Sortable(true)
        .ToolBar(toolbar =>
        {
            toolbar.ClientTemplateId("GridToolbarTemplateOpt");
        })
        .Editable(editable => { editable.Mode(GridEditMode.InLine); }) //.TemplateName("_OptionsCountermeasureCreate").DisplayDeleteConfirmation(false); })*/
        .Events(e =>
        {
    e.Edit("grdCountermeasure_OnEdit");
    e.Save("grdCountermeasure_OnSave");
})
        .DataSource(datasource => datasource
            .Ajax()
            .PageSize(50)
            .Events(events =>
            {
    events.Error("error_handler");
    events.RequestEnd("Countermeasure_onRequestEnd");
})
            .Model(model =>
            {
    model.Id(m => m.CountermeasureId);
    model.Field(f => f.CountermeasureTypeId).Editable(true);
    model.Field(f => f.Description);
})
            .ServerOperation(false)
            .Read(read => read.Action("GetOptionCountermeasures", "RRManagement").Data("GetOptionId"))
            .Update(update => update.Action("UpdateCountermeasures", "RRManagement"))
            .Create(create => create.Action("CreateCountermeasures", "RRManagement"))
            .Destroy(destroy => destroy.Action("DeleteCountermeasures", "RRManagement"))
    ))

Why won't the edit/delete command of a kendo Grid buttons work inside the kendoWindow?

Any help is appreciated.  Thanks.

Shawn A.

 

 

Shawn
Top achievements
Rank 1
 answered on 09 Dec 2019
1 answer
140 views

Grid content shown as undefined all the cells of the grid after upgrade to .Net core 3.0.

I can see the data sent properly from Controller Action, Please see the attached document.

I was required to change my controller action (as part of .Net core 3.0 upgrade)From: return Json(datatable..ToDataSourceResult(request)); To: return Json(datatable.AsEnumerable().ToDataSourceResult(request));

 

 

Nikolay
Telerik team
 answered on 09 Dec 2019
1 answer
376 views

I am attempting to invoke the Kendo mvc extensions from an automated test.

It builds fine, but at runtime I get an exception when I invoke Kendo.Mvc.Extensions.QueryableExtensions.ToDataSourceResult(...)

 

DataSourceRequest request = CreateDefaultDataSourceRequest();
var dataSourceResult = widgets.ToDataSourceResult(request);  // Exception thrown here

 

The exception is:

System.IO.FileNotFoundException : Could not load file or assembly 'Microsoft.AspNetCore.Mvc.Abstractions, Version=3.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified.
   at Kendo.Mvc.Extensions.QueryableExtensions.ToDataSourceResult

 

I am running this in both .NET Framework 4.6.2 and .NET Core 3.0. It works fine in .NET Framework, it's just the .NET Core build which fails.

 

Here is the complete .csproj file:

<?xml version="1.0" encoding="utf-8"?>
<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFrameworks>net462;netcoreapp3.0</TargetFrameworks>
    </PropertyGroup>
 
    <ItemGroup>
      <PackageReference Include="NUnit" Version="3.12.0" />
    </ItemGroup>
    <ItemGroup>
        <ProjectReference Include="..\DATMedia.Core\DATMedia.Core.csproj" />
    </ItemGroup>
 
    <ItemGroup Condition="'$(TargetFramework)' == 'net462'">
        <PackageReference Include="Telerik.UI.for.AspNet.Mvc5" Version="2019.3.1023" />
    </ItemGroup>
 
    <ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp3.0'">
        <PackageReference Include="Telerik.UI.for.AspNet.Core" Version="2019.3.1023" />
    </ItemGroup>
 
    <!-- Some Googling suggested this would help, but nope.-->
    <ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp3.0'">
        <FrameworkReference Include="Microsoft.AspNetCore.App" />
    </ItemGroup>
 
</Project>

 

 

 

 

Plamen
Telerik team
 answered on 09 Dec 2019
3 answers
562 views

I can't find where to indicate the model i.e what's the equavalent of  @(Html.Kendo().Grid<Model> in the TagHelper syntax.

Without the model I can't get intellisense for my grid columns and inferred column names (DataAnnotation) are missing.

 

 

Tsvetomir
Telerik team
 answered on 06 Dec 2019
1 answer
712 views

Can i set a default preset filter value for a grid at runtime? 

I'd like to add a isEqualTo value from jquery or similar

.Filter(f => f.Add(a => a.OperatorID).IsEqualTo( ? ))

Nikolay
Telerik team
 answered on 05 Dec 2019
6 answers
568 views

Hi, 

 

I want to bind a label to a combobox using the tag '<label asp-for="test"></label>'.

I followed the online demo example exactly and it didn't work.

Is this a bug in the code for .NET CORE? 

Petar
Telerik team
 answered on 05 Dec 2019
1 answer
308 views

Hi,

I am using the scheduler but would like to pass the entered values in the scheduler (name, description, etc) to my C# controller, ideally within the kendo code in my view.

 

Could someone advise how to do this? I need to invoke a C# controller method on creation of an appointment.

Ivan Danchev
Telerik team
 answered on 03 Dec 2019
2 answers
307 views

 

I am a complete newbie to Kendo UI. I am trying to follow the getting started exercise https://docs.telerik.com/aspnet-mvc/helpers/data-management/grid/binding/custom-binding

Step 1

public ActionResult Index([DataSourceRequest(Prefix = "Grid")] DataSourceRequest request)

{

    IQueryable<Order> orders = new NorthwindEntities().Orders;

}

It does not recognise Prefix = "Grid".   The type of namespace 'Prefix' could not be found.

I cannot work out what namespace I need to resolve this.

Any help greatly appreciated.

I am using core 2.2 , VS 2017 and Kendo-UI 2019.3.1023

 

 

 

 

 

 

Aleksandar
Telerik team
 answered on 03 Dec 2019
14 answers
207 views

Hello

im trying to apply grouping

Here is my Read method

01.var result = await _helpDeskDbContext.Set<Ticket>()
02.               .Where(a => a.IsDeleted == false && AllowedCats.Contains(a.CategoryIdRef.Value))
03.               .OrderBy(a => a.Status.Sort)
04.               .Select(a => new TicketViewModel
05.           {
06.               Assignee = a.AssigneeUser.FullName,
07.               Category = a.Category.Name,
08.               Code = a.Code,
09.               Project = a.Project.Name,
10.               Id = a.Id,
11.               IsEditable = a.Status.IsEditable,
12.               Priority = a.Priority.Name,
13.               Requester = a.Requester.Name,
14.               RequestedOn = a.CreatedDate.ToString("yyyy/MM/dd hh:mm tt", System.Globalization.CultureInfo.InvariantCulture),
15.               Status = a.Status.Name,
16.               Subject = a.Subject,
17.               StatusCode = a.Status.Code,
18.               PriorityColor = new DataItem { text = a.Priority.ForeColor, value = a.Priority.BackColor },
19.               StatusColor = new DataItem { text = a.Status.ForeColor, value = a.Status.BackColor },
20.               ProjectColor = new DataItem { text = a.Project.ForeColor, value = a.Project.BackColor },
21.               StatusSort = a.Status.Sort
22.           }).ToDataSourceResultAsync(request);

 

and here is my grid configuration

.DataSource(op =>
                                       {
                                           op.Ajax().Model(m => m.Id(x => x.Id)).Group(a => a.Add(s => s.Assignee)).Read(r => r.Action("Read", "Tickets"));
                                       })

 

and the sql command from kestrel 

SELECT [t].[Assignee], [t].[Category], [t].[Code0], [t].[Project], [t].[Id], [t].[IsEditable], [t].[Priority], [t].[Requester], [t].[CreatedDate], [t].[c], [t].[Status], [t].[Subject], [t].[StatusCode], [t].[text], [t].[value], [t].[text0], [t].[value0], [t].[text1], [t].[value1], [t].[StatusSort], [t].[FullName], [t].[Name], [t].[Code], [t].[Name], [t].[IsEditable], [t].[Name], [t].[Name], [t].[Name], [t].[Code], [t].[ForeColor], [t].[BackColor], [t].[ForeColor], [t].[BackColor], [t].[ForeColor], [t].[BackColor], [t].[Sort]
      FROM (
          SELECT [a.AssigneeUser].[FullName] AS [Assignee], [a.Category].[Name] AS [Category], [a].[Code] AS [Code0], [a.Project].[Name] AS [Project], [a].[Id], [a.Status].[IsEditable], [a.Priority].[Name] AS [Priority], [a.Requester].[Name] AS [Requester], [a].[CreatedDate], N'yyyy/MM/dd hh:mm tt' AS [c], [a.Status].[Name] AS [Status], [a].[Subject], [a.Status].[Code] AS [StatusCode], [a.Priority].[ForeColor] AS [text], [a.Priority].[BackColor] AS [value], [a.Status].[ForeColor] AS [text0], [a.Status].[BackColor] AS [value0], [a.Project].[ForeColor] AS [text1], [a.Project].[BackColor] AS [value1], [a.Status].[Sort] AS [StatusSort]
          FROM [HelpDesk].[Tickets] AS [a]
          LEFT JOIN [HelpDesk].[Contacts] AS [a.Requester] ON [a].[RequesterIdRef] = [a.Requester].[Id]
          LEFT JOIN [HelpDesk].[Priorities] AS [a.Priority] ON [a].[PriorityIdRef] = [a.Priority].[Id]
          LEFT JOIN [HelpDesk].[Projects] AS [a.Project] ON [a].[ProjectIdRef] = [a.Project].[Id]
          LEFT JOIN [HelpDesk].[Categories] AS [a.Category] ON [a].[CategoryIdRef] = [a.Category].[Id]
          LEFT JOIN [HelpDesk].[Status] AS [a.Status] ON [a].[StatusIdRef] = [a.Status].[Id]
          LEFT JOIN [dbo].[UserInfos] AS [a.AssigneeUser] ON [a].[AssigneeIdRef] = [a.AssigneeUser].[UserId]
          WHERE ([a].[IsDeleted] = 0) AND COALESCE([a].[CategoryIdRef], 0) IN (3)
          ORDER BY [a.AssigneeUser].[FullName], [a.Status].[Sort]
          OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY
      ) AS [t]
      ORDER BY [t].[FullName]

 

in the read method gives error 500 and the i looked to my error logs and i found below error 

 

System.Data.SqlClient.SqlException (0x80131904): Invalid column name 'FullName'.
Invalid column name 'Name'.
Invalid column name 'Code'.
Invalid column name 'Name'.
Invalid column name 'Name'.
Invalid column name 'Name'.
Invalid column name 'Name'.
Invalid column name 'Code'.
Invalid column name 'ForeColor'.
Invalid column name 'BackColor'.
Invalid column name 'ForeColor'.
Invalid column name 'BackColor'.
Invalid column name 'ForeColor'.
Invalid column name 'BackColor'.
Invalid column name 'Sort'.
Invalid column name 'FullName'.

 

please i need help.

am i doing something wrong ? or its in Telerik side

Thanx

Ahmed

NoobMaster
Top achievements
Rank 2
Iron
 answered on 03 Dec 2019
1 answer
117 views

my code as blow:

function GridDataSource(gridName,path, readHandler, createHandler, updateHandler,deleteHandler, model) {

            var grid = GetGrid(gridName);
            var urlRead = '@Url.Content("~")' + encodeURI(path + "?handler=" + readHandler );
            var urlCreate = '@Url.Content("~")' + encodeURI(path + "?handler=" + createHandler);
            var urlUpdate = '@Url.Content("~")' + encodeURI(path + "?handler=" + updateHandler);
            var urlDestroy = '@Url.Content("~")' + encodeURI(path + "?handler=" + deleteHandler);


            if (model == null)
                model = { id: "Id" };

            var dataSource = new kendo.data.DataSource({
                type: "aspnetmvc-ajax",
                pageSize: 1000,
                serverPaging: false,
                serverGrouping: false,
                transport: {
                    read: {
                        url: urlRead,
                        data: kendo.antiForgeryTokens(),
                    },
                    create: {
                        url: urlCreate,
                        data: kendo.antiForgeryTokens(),
                        cache: true
                    },
                    update: {
                        url: urlUpdate,
                        data: kendo.antiForgeryTokens(),
                    },
                    destroy: {
                        url: urlDestroy,
                        data: kendo.antiForgeryTokens(),
                        cache: true
                    },
                    parameterMap: function (data, type) {
                        if (type == "create") {
                            // send the created data items as the "models" service parameter encoded in JSON
                            return { models: kendo.stringify(data.models) };
                        }
                    }
                },
                schema: {
                    data: "Data",
                    total: "Total",
                    errors: "Errors",
                    model: model
                }
            });


            grid.bind("dataBound", function () {

                if (grid.dataSource.data().length>0)
                    grid.select("tr:eq(0)");

            });
            grid.setOptions({
                dataSource: dataSource,
                persistSelection: true,
            });

            //grid.setDataSource(dataSource);

        }

 

function BtnAddClientClick(e) {
        var ds = GetGrid("DgClient").dataSource;
        var newRow = kendo.observable({
            Id: Guid(),
            Clientname: "xxxxx",
            Status: "Draft",
            Comments: ""
        });

        var dataItem = ds.insert(0, newRow);
        ds.sync();
    }

 

public ActionResult OnPostAddClient([DataSourceRequest]DataSourceRequest request, Cmclient client)
        {
            var data = Request.Form;
            var id = data["Id"][0];

            return new JsonResult("OK");

            //ds.Cmclient.Add(client);
            //ds.SaveChanges();
            //return new JsonResult(new[] { client }.ToDataSourceResult(request, ModelState));
        }

 

 

not work. why? please help.

Alex Hajigeorgieva
Telerik team
 answered on 03 Dec 2019
Narrow your results
Selected tags
Tags
+? more
Top users last month
Rob
Top achievements
Rank 3
Bronze
Iron
Iron
Sergii
Top achievements
Rank 1
Iron
Iron
Dedalus
Top achievements
Rank 1
Iron
Iron
Lan
Top achievements
Rank 1
Iron
Doug
Top achievements
Rank 1
Want to show your ninja superpower to fellow developers?
Top users last month
Rob
Top achievements
Rank 3
Bronze
Iron
Iron
Sergii
Top achievements
Rank 1
Iron
Iron
Dedalus
Top achievements
Rank 1
Iron
Iron
Lan
Top achievements
Rank 1
Iron
Doug
Top achievements
Rank 1
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?