This is a migrated thread and some comments may be shown as answers.

[Solved] Ajax Binding Column Visible

1 Answer 24 Views
Grid
This is a migrated thread and some comments may be shown as answers.
This question is locked. New answers and comments are not allowed.
developer
Top achievements
Rank 1
developer asked on 31 Oct 2011, 11:02 PM
Hi,

I have a Ajax bound grid in _SearchResult view as :

@using Telerik.Web.Mvc
@model GridModel<SearchGridContainer> 

@( Html.Telerik().Grid<SearchGridContainer>()
    .Name("SearchGrid")
    .EnableCustomBinding(true)
    .DataKeys(dk => dk.Add(c => c.EncounterId))
    .Columns(columns =>
                 {
                     columns.Bound(c => c.Id).Title("#").ClientTemplate("<#= ++index #>");                   
                     columns.Bound(c => c.Name).Title("Patient<br />Type").Width(70);
                     columns.Bound(c => c.Priority).Title("Priority");
                     columns.Bound(c => c.SessionKey).ClientTemplate("<#= SessionKey#>")
                                                                             .Title("Session<br/>Key")
                                                                             .Visible(ViewData["IsAdmin"] != null ? (bool)ViewData["IsAdmin"] : false); 
                 })
    .DataBinding(dataBinding => dataBinding.Ajax().Select("_Search", "Search").Enabled(true))
    .Pageable(pager => pager.PageSize(20).Style(GridPagerStyles.NextPreviousAndNumeric).Total(Model.Total))
    .Groupable(grouping => grouping.Enabled(false))
    .Footer(true)
    .ClientEvents(events => events.OnDataBound("searchGrid_onDataBound").OnDataBinding("searchGrid_onDataBinding")))   


------------------------------------------------------------------------------------------------

And a search controller like:

        [GridAction(EnableCustomBinding = true)]
        public ActionResult _Search(GridCommand command)
        {
            var gridModel = new GridModel<SearchGridContainer>();
.......
            gridModel.Data = //gets filled from db as IList<SearchGridContainer>
            gridModel.Total = count;
            ViewData["IsAdmin"] = CurrentUser.IsAdmin();   //returns true/false   
            return View("_SearchResult", gridModel);
        }
-------------------------------------------
    public class SearchGridContainer  
    {
        public string SessionKey { get; set; }
public string Name { get; set; }
        public int Id { get; set; }
        public int Priority{ get; set; }
    } 

----------------------------------------

Problem is that ViewData["IsAdmin"] is passed as null so the column would not be rendered. all other columns displayed correctly.

and if i put true as  .Visible(true) column sessionkey would be displayed.   

Any idea how i can fix it!? 

any other way to show hide a column in a grid based on a variable/object filed !?
sth like; 
....
.columns.Bound(c => c.SessionKey).ClientTemplate("<#= SessionKey#>").Title("Session<br/>Key").Visible( c => c.IsAdmin );

and later adding    public bool IsAdmin{ get; set; }   to the SearchGridContainer   class.


Thanks for any help

1 Answer, 1 is accepted

Sort by
0
developer
Top achievements
Rank 1
answered on 01 Nov 2011, 11:40 PM
Anyone !?
Tags
Grid
Asked by
developer
Top achievements
Rank 1
Answers by
developer
Top achievements
Rank 1
Share this question
or