2

在我们的应用程序中,我们有样式表来定义常用颜色等……我编写了一个快速而肮脏的函数,我从存储过程中获取数据集,删除我不想显示的列,将其塞进以编程方式生成的 DataGrid ,设置 DataGrid 的样式,然后将其导出到 Excel。每个人都喜欢 Excel 输出中的颜色(喘气!它们与 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# 人的任何想法(你们中的大多数人……)?
谢谢,
迈克尔

4

3 回答 3

2

所有 Web.UI.Control 对象都有一个 .Styles 属性,可以作为 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 并自行解析。

于 2009-03-03T17:35:48.680 回答
1

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

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

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

于 2009-03-03T16:37:41.160 回答
1

不久前,我按照这些思路写了一些东西。它涉及处理 CSS 文件的 HttpHandler,更改 IIS 配置以使 asp.net 接收 CSS 文件的请求,以及包含我的颜色定义的简单 xml 文件结构。但是你已经用数据库做到了,这也很好。

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

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

用我的 xml 定义按钮背景颜色和按钮文本颜色的值。我使用正则表达式文本替换来处理 CSS 文件,替换为 xml 文件中的相关值。

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

希望有帮助。

如果您需要任何关于其中的任何指针,那么我相信我可以挖掘出一些示例代码。

于 2009-03-04T23:41:14.783 回答