31

私はc#コードを使用してプログラムでバインドするGridViewを持っています。問題は、列がデータベースから直接ヘッダーテキストを取得することです。これは、Webサイトに表示されると奇妙に見える可能性があります。したがって、基本的には、列ヘッダーのテキストをプログラムで変更したいと思います。私はすでに次のことを試しました、

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

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

正しい結果が得られないようです。

4

6 に答える 6

55

データバインドされたRowDataBoundにトリガーされるGridViewのイベントでこれを行う必要があります。GridViewRow

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

または、aspx で宣言的に列を設定AutogenerateColumnsして追加することもできます。false

<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 の datarow バインド イベントで実行できます。次のコード サンプルを試してください。

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

行データバインドイベントの詳細については、こちらをご覧ください。

于 2012-10-22T14:17:46.477 に答える
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 に答える