C# 如何使用SQL值更改列的Gridview标题文本

C# 如何使用SQL值更改列的Gridview标题文本,c#,asp.net,sql,gridview,C#,Asp.net,Sql,Gridview,我正在制作一个C asp.net网页,显示某些项目的数据,但我想在gridview中设置标题的值,以便根据用户正在查看的项目更改文本 例如:用户希望看到对象A的数据,而不是它应该进入数据库,查找表应该为该项的标题显示哪些值 因此,如果在数据库中显示:尺寸、高度、材质,那么这三个将是标题文本 但是如果它是对象B,那么它应该显示标题文本如下:大小、长度、颜色 根据用户选择的内容,每个项目的标题都有不同的文本 我已经完成了从数据库中获取值的部分。我在如何使用数据库中的头名称使头动态化方面遇到了问题 我

我正在制作一个C asp.net网页,显示某些项目的数据,但我想在gridview中设置标题的值,以便根据用户正在查看的项目更改文本

例如:用户希望看到对象A的数据,而不是它应该进入数据库,查找表应该为该项的标题显示哪些值

因此,如果在数据库中显示:尺寸、高度、材质,那么这三个将是标题文本

但是如果它是对象B,那么它应该显示标题文本如下:大小、长度、颜色

根据用户选择的内容,每个项目的标题都有不同的文本

我已经完成了从数据库中获取值的部分。我在如何使用数据库中的头名称使头动态化方面遇到了问题

我看到这个方法可以在.cs页面中使用,但它不是动态的

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
   if (e.Row.RowType == DataControlRowType.Header)
   {
    e.Row.Cells[0].Text = "The new header";
   }
}

如何从sql命令中读取值并将其与标头关联?我就是找不到正确的语法或方法来关联它们

您可以动态更改GridView上的列定义。例如:

protected void Page_Load(object sender, EventArgs e) {
    LoadTableDefs();
}

private void LoadTableDefs() {
    GridView1.Columns.Clear();
    if (/* condition 1 */) {
        TemplateField tf = new TemplateField();
        tf.HeaderTemplate = "foo";
        tf.ItemTemplate = new ItemTemplate();
        tf.EditItemTemplate = new EditItemTemplate();
        GridView1.Columns.Add(tf);
    } else if (/* condition 2 */) {
        TemplateField tf2 = new TemplateField();
        ...
        GridView1.Columns.Add(tf2);
    }
}

我对此感到厌倦,以下几行给了我错误:tf.HeaderTemplate=foo;tf.ItemTemplate=新的ItemTemplate;tf.EditItemTemplate=新的EditItemTemplate;它不喜欢在=符号后面的正确表达式。对不起,那一行应该是:对不起,头模板应该是一个实现的类,但是实现起来很简单。