31

我有一个 GridView,我使用 c# 代码以编程方式绑定。问题是,这些列直接从数据库中获取它们的标题文本,这在网站上显示时可能看起来很奇怪。所以基本上,我想以编程方式修改列标题文本。我已经尝试过以下方法,

testGV.Columns[0].HeaderText = "Date";

this.testGV.Columns[0].HeaderText = "Date";

似乎没有给我正确的结果。

4

6 回答 6

55

您应该在 GridView 的RowDataBound事件中执行此操作,该事件在每次数据绑定GridViewRow 后触发。

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

或者您可以在 aspx 上以声明方式设置AutogenerateColumnsfalse添加列:

<asp:gridview id="GridView1" 
  onrowdatabound="GridView1_RowDataBound"
  autogeneratecolumns="False"
  emptydatatext="No data available." 
   runat="server">
    <Columns>
         <asp:BoundField DataField="DateField" HeaderText="Date" 
            SortExpression="DateField" />
    </Columns>
</asp:gridview>
于 2012-10-22T14:17:19.893 回答
19

我认为这有效:

 testGV.HeaderRow.Cells[0].Text="Date"
于 2015-12-24T21:32:58.400 回答
4

您可以使用 gridview 的数据行绑定事件来完成。尝试以下代码示例:

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

有关行数据绑定事件研究的更多详细信息Thsi....

于 2012-10-22T14:17:46.477 回答
1

在您的 asp.net 页面上添加 gridview

<asp:GridView ID="GridView1" onrowdatabound="GridView1_RowDataBound" >
</asp:GridView>

在名为 GridView1_RowDataBound 的 c# 类中创建一个方法 protected void 方法

作为

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

一切都应该正常工作。

于 2014-02-10T15:57:13.563 回答
1

最好从gridview而不是静态/修复索引中查找单元格,这样无论何时添加/删除gridview上的任何列都不会产生任何问题。

ASPX:

<asp:GridView ID="GridView1" OnRowDataBound="GridView1_RowDataBound" >
    <Columns>
        <asp:BoundField HeaderText="Date" DataField="CreatedDate" />
    </Columns>
</asp:GridView>

CS:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.Header)
    {
        for (int i = 0; i < e.Row.Cells.Count; i++)
        {
            if (string.Compare(e.Row.Cells[i].Text, "Date", true) == 0)
            {
                e.Row.Cells[i].Text = "Created Date";
            }
        }
    }
}
于 2018-09-12T10:55:01.467 回答
0
protected void grdDis_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            #region Dynamically Show gridView header From data base
            getAllheaderName();/*To get all Allowences master headerName*/

            TextBox txt_Days = (TextBox)grdDis.HeaderRow.FindControl("txtDays");
            txt_Days.Text = hidMonthsDays.Value;
            #endregion
        }
    }
于 2019-05-15T07:30:19.607 回答