代码之家  ›  专栏  ›  技术社区  ›  DiningPhilanderer

以编程方式访问样式以获取值

  •  1
  • DiningPhilanderer  · 技术社区  · 16 年前

    在我们的应用程序中,我们有样式表来定义常见的颜色等。我编写了一个快速而肮脏的函数,从存储过程中获取数据集,删除我不想显示的列,将其填充到编程生成的DataGrid中,设置DataGrids样式,然后将其导出到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;
    



    那些比我(你们中的大多数人)懂得更多的人有什么想法吗?

    迈克尔

    3 回复  |  直到 16 年前
        1
  •  2
  •   tsilb    16 年前

    所有Web.UI.Control对象都有.Styles属性,可以作为样式[“名称”]访问。因此,您可以这样做:

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

    几个月前我有一个类似的想法:)注意,要让它正常工作,您的网格必须运行在=“服务器”。

    编辑: 看起来你想读取网格并使用它。。。如果您使用的是.CssStyle和样式表(.css),那么您必须对该css文件进行HTTP访问并自己解析它。

        2
  •  1
  •   casperOne    16 年前

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

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

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

        3
  •  1
  •   Antony Scott    16 年前

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

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

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

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

    希望有帮助。