Search code examples
c#asp.netgridviewstyles

Styling a Gridview "Caption" from C# class


I'm trying to style the caption of a ASP.Net GridView in a C# file. here is my method that returns a styled 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;
}

By default the Caption is not styled (it's just black text on top of the gridview)

Does anyone know how I can style the Caption Navy with white text? (similar to the way I have styled the header row maybe?)

EDIT: I've done this before by using CSS, but I don't have the liberty of doing that as, this is a program that generates gridviews to send in an email. There is no aspx file or skin...


Solution

  • So after talking with another developer, we came up with this. (BTW I'm kicking myself because it is so simple)

    To write out the gridview for sending in the email, I was using an htmlwriter like so:

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

    All I had to do was add the styles before using the htmlwriter to render the controls.

    So I added this after creating the 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>");
    

    Now of course I will put this string in a config file somewhere, so I don't have to recompile the project to change the style of the email, but this is all I needed to do.

    Wala! all captions are styled the same...