2010-10-04 46 views
3

我试图在C#文件中设置ASP.Net GridView的标题样式。这里是我的方法,该方法返回一个风格的GridView:从C#中设计Gridview“标题”类

private GridView setupGridView(string caption) 
{ 
var gview = new GridView() 
{ 
    BackColor = Color.White, 
    BorderColor = Color.Gray, 
    BorderStyle = BorderStyle.Solid, 
    BorderWidth = new Unit(1, UnitType.Pixel), 
    Caption = caption, 
    ForeColor = Color.Black, 
}; 
gview.HeaderStyle.BackColor = Color.Navy; 
gview.HeaderStyle.ForeColor = Color.White; 
gview.HeaderStyle.BorderColor = Color.DarkGray; 
gview.HeaderStyle.BorderWidth = new Unit(1, UnitType.Pixel); 
gview.HeaderStyle.BorderStyle = BorderStyle.Solid; 
gview.AlternatingRowStyle.BackColor = Color.LightGray; 
return gview; 
} 

默认的标题是不是风格(这是在GridView上的顶部只黑色文本)

有谁知道我如何与样式的标题海军白色文字? (类似我曾经也许风格的标题行的方式?)

编辑:我以前使用CSS这样做了,但我没有这样做的自由,作为,这是一个程序,生成网格视图以发送电子邮件。没有aspx文件或皮肤...

回答

3

所以在与另一位开发人员交谈之后,我们提出了这个问题。 (顺便说一句,我踢自己,因为它是如此简单)

写出来的GridView控件在电子邮件发送,我使用的HTMLWriter像这样:

var sbuilder = new StringBuilder(); 
var swriter = new StringWriter(sbuilder); 
var htmlWriter = new HtmlTextWriter(swriter); 
//... 
myGridview.RenderControl(htmlwriter); 
mymailMessage.Body = sbuilder.ToString(); 

我所要做的就是添加使用htmlwriter呈现控件之前的样式。

所以我加入这个创建的HTMLWriter

htmlWriter.Write("<style type=\"text/css\">caption { font-family: Arial, sans-serif; color: white; font-size: 14px; font-weight: bold; padding: 3px 100px 3px 7px; text-align: left; white-space: nowrap; text-align: center; background-color: navy;}</style>"); 

当然现在我会把这个字符串中某处的配置文件之后,所以我没有重新编译的项目更改电子邮件的风格,但这是我需要做的。

Wala!所有字幕都是相同的样式...

1

如果您使用gview.HeaderRow而不是gview.HeaderStyle那么它将工作。尝试:

gview.HeaderRow.ForeColor = Drawing.Color.White 

这将内联样式添加到表行(TR),因此可以在HTML格式的电子邮件中使用。

+0

这没有奏效,我得到了一个N​​ullReferenceException,但我刚刚与另一个开发人员谈过话,他帮我弄明白了。我会在一分钟后发布答案。 – EJC 2010-10-05 15:37:08