【问题标题】:Specify HeaderText for an AutoGenerateColumn GridView为 AutoGenerateColumn GridView 指定 HeaderText
【发布时间】:2013-01-14 07:11:46
【问题描述】:

我有一个自动生成列的gridview(有一个List<> DataSource),现在我需要为它的列指定HeaderText。我搜索了很多并检查了一些以前的问题,结果发现自动生成的网格没有列集合,最后我在这篇文章 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:可见属性在页面加载上起作用。任何帮助表示赞赏。

【问题讨论】:

    标签: asp.net c#-4.0 gridview


    【解决方案1】:

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

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

    【讨论】:

    • 是的,我猜BoundField 是实现这一目标的标准方法...感谢您的建议。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2017-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-05
      • 1970-01-01
      • 1970-01-01
      • 2015-10-21
      • 1970-01-01
      相关资源
      最近更新 更多