This question is locked. New answers and comments are not allowed.
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 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
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