2011-11-11 29 views
3

我想在线配置Dynamics CRM 2011,以便默认显示特定用户角色的特定仪表板。这可能通过一些设置或通过使用插件或JavaScript编写自定义代码?默认情况下为特定用户角色显示特定仪表板

例如,如果首席执行官CEO登录 - 他应该看到年度收入仪表板,如果销售人员登录,他们会看到销售线索仪表板。 仪表板是公用仪表板而不是个人仪表板。

回答

4

如果您有内部部署版本,可能做到这一点的最快方法是访问数据库表UserSettingsBase和更新DefaultDashboardId列,你希望每个用户有仪表板的GUID。 (编辑 - 刚刚意识到你正在使用CRM Online的,所以这是不适用的。)

您可以通过实例化UserSettings实体为每个用户,找到每个用户的适当roleid和更新完成的API框架相同DefaultDashboardIDUserSettings实体的属性。下面是一个例子。

using (OrganizationServiceProxy _serviceProxy = new OrganizationServiceProxy(new Uri("Your CRM Server"), null, null, null)) 
{ 
    _serviceProxy.EnableProxyTypes(); 
    using (OrganizationServiceContext osc = new OrganizationServiceContext(_serviceProxy)) 
    { 
     var usersSettings = from u in osc.CreateQuery<SystemUser>() 
          join ur in osc.CreateQuery<SystemUserRoles>() on u.SystemUserId.Value equals ur.SystemUserId.Value 
          join r in osc.CreateQuery<Role>() on ur.RoleId.Value equals r.RoleId.Value 
          select new 
          { 
           id = u.SystemUserId.Value 
           , roleName = r.Name 
          }; 

     foreach (var users in usersSettings) 
     { 
      UserSettings us = new UserSettings(); 
      us.SystemUserId = users.id; 
      switch (users.roleName) 
      { 
       case "CEO": 
        us.DefaultDashboardId = Guid.Parse("2E3D0841-FA6D-DF11-986C-00155D2E3002"); //the appropriate dashboardid 
        break; 
       //case "Sales Person" 
       //case "..." 
       //default: ... 
      } 
      _serviceProxy.Update(us); 
     } 
    } 
}