为AutoGenerateColumn GridView指定HeaderText

时间:2013-01-14 07:11:46

标签: asp.net c#-4.0 gridview

我有一个自动生成列的gridview(有一个List<> DataSource),现在我需要为它的列指定HeaderText。我已经搜索了很多内容并检查了之前的一些问题,但发现自动生成的网格没有Columns Collection ,最后我在本文后面创建了自己的自定义网格http://damieng.com/blog/2006/09/25/extending-gridview-to-access-generated-columns 现在我在属性BoundColumns中获取列集合,我尝试在PageLoadRowDataBound事件上设置HeaderText属性,但都是徒劳的,我需要知道我可以放哪个事件这段代码使它工作

            gridUsers.BoundColumns[0].Visible = false;
            gridUsers.BoundColumns[1].HeaderText = "Login ID";
            gridUsers.BoundColumns[2].HeaderText = "User Name";
            gridUsers.BoundColumns[3].Visible = false;
            gridUsers.BoundColumns[4].HeaderText = "User Email";
            gridUsers.BoundColumns[5].HeaderText = "User Status";
            gridUsers.BoundColumns[6].HeaderText = "User Role";

P.S:可见属性正在处理页面加载。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

您不必执行自动生成的列,尤其是在您要手动设置标题时。使用正确的列标题将数据源更改为返回值,或使用<columns><asp:boundfield HeaderText="" >...并手动指定列(并设置AutoGenerateColumns=false)。

在大多数情况下,您在RowDataBound事件期间更改了标题和列,但是如果您使用声明性语法或者除非您有特殊的渲染要求,则不需要。

答案 1 :(得分:0)

是的,您可以按照以下方式执行此操作

protected void GridView1_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e) 
{

    if (e.Row.RowType == DataControlRowType.Header) 
    {
        GridView1.Columns[0].HeaderText = "your header text name";
    } 
}