Customization of DashboardMenu

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

Tags: