Unable to lock columns in Dynamic Grid

3 posts, 0 answers
  1. Gareth
    Gareth avatar
    3 posts
    Member since:
    Mar 2015

    Posted 07 Oct 2015 Link to this post

    Hi,

    I have a Kendo Grid that I am building dynamically from a `System.Data.DataTable`. I am having issues trying to lock the columns.

    I am setting a few columns to locked based on their title as you will see in my code. The boolean check is coming back as true or false where expected and that value is correctly being set in the `.Locked()` property. But the grid is not locking that column, nor is it giving me the `Lockable` option in the column menu.

    Please see my code below:

           @model MvcProject.UnitOfWork.ViewModels.Reports.FacilityEquipmentDistributionVm


           @(Html.Kendo().Grid<dynamic>()
           .Name("resultsGrid")
                           .Columns(columns =>
                                {
                                    columns.Group(group => group
                                        .Title("Facility Equipment Distribution Report : Date run - " + DateTime.Now.ToShortDateString())
                                        .Columns(header =>
                                        {
                                           
                                            foreach (System.Data.DataColumn column in Model.CombinedTable.Columns)
                                            {
                                                string title = "";
                                                bool showColumn;
                                                
                                                if (Model.ColumnTitles.TryGetValue(column.ColumnName, out title))
                                                {
                                                    
                                                }
                                                else
                                                {
                                                    title = column.ColumnName;
                                                }

                                                if (Model.ColumnsToShow.TryGetValue(column.ColumnName, out showColumn))
                                                {

                                                }
                                                else
                                                {
                                                    showColumn = false;
                                                }

                                                bool lockColumn = (title == "PropertyRef" || title == "PropertyName" || title == "Address" || title == "Prefix" || title == "Floor");
                                                
                                               header.Bound(column.ColumnName)
                                                    .Title(title)
                                                    .Visible(showColumn)
                                                    .Locked(lockColumn)
                                                    .Lockable(true)
                                                    .Width(title.Length * 8);

                                            }

                                        })
                                    );
                                })

                            .HtmlAttributes(new { style = "height: 900px;" })
                                .Pageable(p => p
                                    .ButtonCount(5)
                                    .PageSizes(true)
                                    .Refresh(true)
                                )

                                .Scrollable(s => s.Height("auto").Enabled(true))
                                .Sortable()
                                .Reorderable(reorderable => reorderable.Columns(true))
                                .Filterable()
                                .Groupable()
                                .ColumnMenu()
                                .Resizable(r => r
                                    .Columns(true)
                                )
                                    .Excel(excel => excel
                                        .FileName("Facility Equipment Distribution.xlsx")
                                        .Filterable(true)
                                        .ProxyURL(Url.Action("_GridExportSave", "Reports"))
                                        .AllPages(true)
                                    )
                                .DataSource(d => d
                                    .Ajax()
                                    
                                    .Read(read => read.Action("_FacilityEquipmentDistributionResults_Read", "Reports").Data("Genesis.Reports.Space.Search.getPaginationData"))
                                        .ServerOperation(true)
                                        .PageSize(20)
                                    )
                                    .ToolBar(tools =>
                                    {
                                        tools.Pdf();
                                        tools.Excel();
                                    })
            //PDF removed for now until it is patched
                                    .Pdf(pdf => pdf
                                         .AllPages()
                                        .FileName("FacilityEquipmentDistribution.pdf")
                                        .ProxyURL(Url.Action("_GridExportSave", "Reports"))
                                    )
                                    //.Events(events => events.DataBound("Genesis.Reports.Space.Search.loadTT"))

    )

    Any help would be much appreciated.

    Kind Regards,
    Gareth
  2. Radoslav
    Admin
    Radoslav avatar
    1564 posts

    Posted 09 Oct 2015 Link to this post

    Hello Gareth,

    Thank you for contacting us.

    When the columns are grouped only the root groups can be lockable and locked, unfortunately the columns into the group does not support such functionality. So in your case in order to have locked columns you need to remove the group and add columns directly to the grid.
    I am sending you a simple example which demonstrates this when dynamic columns are used.

    If you need further assistance, do not hesitate to contact us again.

    Regards,
    Radoslav
    Telerik
    Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Feedback Portal and vote to affect the priority of the items
  3. UI for ASP.NET MVC is VS 2017 Ready
  4. Gareth
    Gareth avatar
    3 posts
    Member since:
    Mar 2015

    Posted 20 Oct 2015 in reply to Radoslav Link to this post

    Hi Radoslav,

     Forgot to respond. Thanks for your feedback.

     Kind Regards,

    Gareth

Back to Top