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

时间:2014-01-14 19:29:48

标签: c# asp.net sql gridview

我正在制作一个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命令中获取我正在读取的值并将其与标题相关联?我只是找不到正确的语法或方法来关联它们。

1 个答案:

答案 0 :(得分:0)

您可以动态更改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);
    }
}