Как уже отмечали другие, если заголовок заголовка и т. Д. Известен во время разработки, отключите AutoGeneratedColumns и просто задайте заголовок и т. Д. В определении поля вместо использования автоматически сгенерированных столбцов. Из вашего примера видно, что запрос является статическим и что заголовки известны во время разработки, так что это, вероятно, ваш лучший выбор.
Однако [хотя ваш вопрос не определяет это требование] - , если текст заголовка (и форматирование и т. Д.) не известен во время разработки, но будет определен во время выполнения если вам нужно автоматически генерировать столбцы (используя AutoGenerateColumns =
true ") для этого есть обходные пути.
Один из способов сделать это - создать новый класс управления, который наследует вид сетки. Затем вы можете установить заголовок, форматирование и т. Д. Для автоматически сгенерированных полей, переопределив сетку представления «CreateAutoGeneratedColumn». Пример:
//gridview with more formatting options
namespace GridViewCF
{
[ToolboxData("<{0}:GridViewCF runat=server></{0}:GridViewCF>")]
public class GridViewCF : GridView
{
//public Dictionary<string, UserReportField> _fieldProperties = null;
public GridViewCF()
{
}
public List<FieldProperties> FieldProperties
{
get
{
return (List<FieldProperties>)ViewState["FieldProperties"];
}
set
{
ViewState["FieldProperties"] = value;
}
}
protected override AutoGeneratedField CreateAutoGeneratedColumn(AutoGeneratedFieldProperties fieldProperties)
{
AutoGeneratedField field = base.CreateAutoGeneratedColumn(fieldProperties);
StateBag sb = (StateBag)field.GetType()
.InvokeMember("ViewState",
BindingFlags.GetProperty |
BindingFlags.NonPublic |
BindingFlags.Instance,
null, field, new object[] {});
if (FieldProperties != null)
{
FieldProperties fps = FieldProperties.Where(fp => fp.Name == fieldProperties.Name).Single();
if (fps.FormatString != null && fps.FormatString != "")
{
//formatting
sb["DataFormatString"] = "{0:" + fps.FormatString + "}";
field.HtmlEncode = false;
}
//header caption
field.HeaderText = fps.HeaderText;
//alignment
field.ItemStyle.HorizontalAlign = fps.HorizontalAlign;
}
return field;
}
}
[Serializable()]
public class FieldProperties
{
public FieldProperties()
{ }
public FieldProperties(string name, string formatString, string headerText, HorizontalAlign horizontalAlign)
{
Name = name;
FormatString = formatString;
HeaderText = headerText;
HorizontalAlign = horizontalAlign;
}
public string Name { get; set; }
public string FormatString { get; set; }
public string HeaderText { get; set; }
public HorizontalAlign HorizontalAlign { get; set; }
}
}