0

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

            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";

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

4

2 回答 2

1

您不必执行自动生成的列,特别是如果您想手动设置标题。将数据源更改为具有正确列标题的返回值,或者使用<columns><asp:boundfield HeaderText="" >...并手动指定列(并设置AutoGenerateColumns=false)。

在大多数情况下,您可以在 RowDataBound 事件期间更改标题和列,但如果您使用声明性语法或除非您有特殊的呈现要求,则不需要这样做。

于 2013-01-14T07:39:57.833 回答
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";
    } 
}
于 2013-01-14T07:31:20.397 回答