2016-08-04 132 views
0

我想根据用户更改我的报告的风格/主题。
我的所有用户都有一个UserGroup。我的UserGroup具有自定义样式。
所有这些信息都在数据库中。
UserStyle:ID | ID UserGroup | LOGO |样式1 |颜色1 |等..动态更改样式。

我想改变我的报告风格与这些信息。
我知道可以给我的项目一个样式名称。
但我可以在主报告代码后面定义它。

奖励:我可以为主报告只做一次吗?

基本上使用样式名称作为CssClass。

+0

你有没有想过使用会话,并与你的JS CSS?所以我的意思是说你可以做的是在登录时,你的会话开始以便用户登录,当他们登录时,取决于用户,例如,可以说,如果用户“Admin”具有红色的背景颜色,那么您可以在js中执行类似.AddClass属性的操作,以在用户登录时添加到您想要的类中?或者也许更新的CSS取决于用户?这是可以肯定的。 –

+0

我已经在Page_Load的主页中处理了Css。 我只是不知道如何在telerik报告中应用CSS或风格。 我知道如何设计一个元素,但它只是针对这个元素,我有一个包含23个子报告的主要报告。它像200+元素,以手动风格。 Iam寻找一种通用的方式来处理风格/主题。 我想在代码后面做。因为'stylename'(有趣的css类)不接受表达式。 –

回答

0

1.编程解决方案

如果您对GUI的反感,这是为你而造!

的1RST是最差,但1RST工作,我身边来了。

telerik报告中的样式可以在StyleRules中定义。
为了基于用户管理主题,您可以使用ReportParameter。

Telerik.Reporting.Drawing.StyleRule styleRule1 = new Telerik.Reporting.Drawing.StyleRule(); 
styleRule1.Selectors.AddRange(new Telerik.Reporting.Drawing.ISelector[] { 
new Telerik.Reporting.Drawing.StyleSelector("MyStyle")}); 

if(reportParameter1.Value == "StyleUser1") 
{ 
    styleRule1.Style.Padding.Left = Telerik.Reporting.Drawing.Unit.Point(2D); 
    styleRule1.Style.Padding.Right = Telerik.Reporting.Drawing.Unit.Point(2D); 
    styleRule1.Style.BackgroundColor = System.Drawing.Color.Blue; 
    styleRule1.Style.Color = System.Drawing.Color.White; 
    styleRule1.Style.Font.Bold = true; 
    styleRule1.Style.Font.Name = "Segoe UI"; 
} 
else { 
    //default style 
} 

您可以从设计师或构造函数中为您添加样式名称。
这样:

this.textBox2.StyleName = "MyStyle"; 

您可以在设计师的创造自己的风格规则,只分配的样式组件在INITIALISE组件。

if(reportParameter1.Value == "StyleUser1") 
{ 
    this.textBox1.StyleName = "MyStyle"; 
    this.textBox2.StyleName = "MyStyle"; 
    this.textBox3.StyleName = "MyStyle"; 
} 
else { 
    //default style 
}