在我们的应用程序中,我们有样式表来定义常见的颜色等…我写了一个快速而又脏的函数,我从存储过程中获取数据集,删除我不想显示的列,将其塞入以编程方式生成的DataGrid,设置DataGrid的样式,然后将其导出到Excel。每个人都喜欢Excel输出中的颜色(Gasp!它们匹配DataGrid颜色,等等等等等等。)

我要添加的最后一篇文章是,我想以编程方式访问一个样式并从中获取颜色代码和其他项目(.IntranetGridHead),而不是硬编码,这就是我现在正在做的事情。
结果

int iHeaderColor = Convert.ToInt32 ("D0D7E8", 16);
DataGrid dg = new DataGrid();
dg.DataSource = dsReturnDataSet.Tables[0].DefaultView;
dg.DataBind();

dg.HeaderStyle.BackColor = System.Drawing.Color.FromArgb(iHeaderColor);
dg.HeaderStyle.Font.Bold = true;
dg.HeaderStyle.Font.Size = 10;

显然,每当公司经历另一个“品牌重塑”并且样式表值会发生变化,excel颜色会自动匹配,我会得到一个大的(拍拍后面的|| cookie)。

来自C#人的任何想法都比我更了解(大多数人都会这样做)#? 谢谢你,结果 迈克尔

有帮助吗?

解决方案

所有Web.UI.Control对象都有.Styles属性,可以作为样式[" Name"]进行访问。因此,你可以这样做:

DataTable dt = LookupStyles();
dg.Styles.Clear();
foreach (DataRow dr in dt.Rows)
  dg.Styles.Add(dr["StyleName"].ToString(), dr["StyleValue"].ToString());

几个月前我有类似的想法:)请注意,为了正常工作,你的网格必须是runat =" server"。

编辑: 看起来你想要阅读网格并使用它......如果你使用.CssStyle和样式表(.css),你将不得不对该css文件进行HTTP GET并自行解析。

其他提示

你必须自己解析CSS文件,而IIRC在.NET框架中没有开箱即用的CSS文件解析器。但是,你可以在这里找到一个免费的:

http://www.codeproject.com/KB/recipes/CSSParser.aspx

然后,您应该可以使用它来解析CSS文件。从那里你应该能够获得样式和价值并将其应用到你的数据网格。

我一会儿就沿着这些方向写了些什么。它涉及一个HttpHandler来处理CSS文件,改变IIS配置以获得asp.net接收CSS文件的请求,以及一个包含我的颜色定义的简单xml文件结构。但是你已经用数据库完成了这个,这也很好。

然后在CSS中我有这样的东西......

.button
{
    background-color: $colours:button-background-colour;
    color: $colours:button-text-colour;
}

使用我的xml定义button-background-color和button-text-color的值。我使用正则表达式文本替换来处理CSS文件替换xml文件中的相关值。

我确信您可以采取其中的一些想法,并将其与现有代码结合使用,以获得理想的效果。您当然需要处理数据库/ xml文件的缓存和更改。

希望有所帮助。

如果您需要任何指针,那么我确信我可以挖出一些示例代码。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top