by berkay
2. December 2011 13:30
You can customize DashboardMenu by using DashboardMenuPrepare event of DashboardSurface.
Below code sample shows how to load Dashboards to DashboardMenu according to authorization.
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
//DashboardMenuPrepare event helps to customize dashboard menu
surface.DashboardMenuPrepare += new Kalitte.Dashboard.Framework.DashboardMenuPrepareEventHandler(surface_DashboardMenuPrepare);
//Shows Dashboard List button on toolbar
surface.ShowDashboardListPanel = true;
surface.DataBind();
}
}
void surface_DashboardMenuPrepare(object sender, Kalitte.Dashboard.Framework.DashboardMenuPrepareEventArgs e)
{
//Retrieves all of dashboards from provider.
var dashboards = DashboardFramework.GetDashboards();
foreach (var item in dashboards)
{
bool hasAuthorization = false;
//AuthorizationInfo provides authorization information of dashboards
foreach (var authorizationInfo in item.AuthorizationInfo)
{
//Authorization checking
hasAuthorization = Thread.CurrentPrincipal.IsInRole(authorizationInfo.Role) && authorizationInfo.CanView;
if (hasAuthorization) break;
}
//DashboardMenu items load from e.List which is List<DashboardMenuItemData>
var dashboard = new DashboardMenuItemData(item, item.ViewMode);
dashboard.DisplayTitle = string.Format("<b class='menu-title'>{0}</b>", item.Title);
//Adding Dashboard to DashboardMenu according to authorization
if (hasAuthorization)
{
dashboard.Group = "Authorized Dashboards";
dashboard.RenderMode = DashboardMenuItemRenderMode.MenuItem;
}
else
{
dashboard.Group = "Non Authorized Dashboards";
dashboard.RenderMode = DashboardMenuItemRenderMode.TextMenuItem;
}
e.List.Add(dashboard);
}
}
You can download more examples from here
ceeac31c-2b9b-4a20-9685-039e56eb7f73|1|5.0
Tags: