C#コードを使用してプログラムでバインドするGridViewがあります。問題は、列がデータベースからヘッダーテキストを直接取得することです。これは、Webサイトで表示すると奇妙に見える場合があります。したがって、基本的には、列ヘッダーのテキストを変更しますが、プログラムで変更します。私はすでに以下を試しました、
testGV.Columns[0].HeaderText = "Date";
そして
this.testGV.Columns[0].HeaderText = "Date";
正しい結果が得られないようです。
GridViewの RowDataBound
イベントで実行する必要があります。このイベントは、GridViewRow
afterごとにトリガーされます。データバインドされました。
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
e.Row.Cells[0].Text = "Date";
}
}
または、 AutogenerateColumns
をfalse
に設定し、aspxに宣言的に列を追加できます。
<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>
私はこれがうまくいくと思う:
testGV.HeaderRow.Cells[0].Text="Date"
Gridviewのデータ行バインドイベントを使用して実行できます。次のサンプルコードを試してください。
protected void grv_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
e.Row.Cells[0].Text = "TiTle";
}
}
行データバインドイベントスタディの詳細については、 Thsi ....
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";
}
}
すべて正常に動作するはずです。
グリッドビューで列を追加/削除するたびに問題が発生しないように、静的/修正インデックスの代わりにグリッドビューからセルを検索する方が良いです。
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";
}
}
}
}
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
}
}