2011-06-10 10 views
2

私は2列のグリッドビューを持っています。私は後ろにコーディングを学びたいとは、aspxファイルでこれをしたくないです。 列のヘッダーテキストを動的に設定するにはどうすればよいですか?どのような時に私はそうするのですか?アダプタがデータでgridviewを埋めた後? 今、私はヘッダーテキストを持っていますが、これはlast_nameであるデータフィールド名とまったく同じで、ヘッダーフィールドでLast Nameを参照したいのです。 私はASP.NET:GridviewのheaderTextのコードを動的に変更する時期と方法

GridView1.Columns[0].HeaderText = "Last Name"; 

を試みたが、私はそれを入れてみましたところはどこでも、コンパイラは、範囲外のインデックスについて不平を言います。

ありがとうございました。

GridViewのためのASPXコード:

<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True" 
       BackColor="White" BorderColor="#DEDFDE" BorderStyle="None" BorderWidth="1px" 
       Width="728px" CellPadding="4" ForeColor="Black" GridLines="Vertical" OnPageIndexChanging="GridView1_PageIndexChanging" 
       OnSorting="GridView1_Sorting" PageSize="14" OnRowDataBound="GridView1_RowDataBound"> 
       <AlternatingRowStyle BackColor="White" /> 
       <FooterStyle BackColor="#CCCC99" /> 
       <HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" /> 
       <PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Right" /> 
       <RowStyle BackColor="#F7F7DE" /> 
       <SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" /> 
       <SortedAscendingCellStyle BackColor="#FBFBF2" /> 
       <SortedAscendingHeaderStyle BackColor="#848384" /> 
       <SortedDescendingCellStyle BackColor="#EAEAD3" /> 
       <SortedDescendingHeaderStyle BackColor="#575357" /> 
       <PagerSettings Mode="NumericFirstLast" FirstPageText="First" LastPageText="Last" 
        PageButtonCount="5" Position="Bottom" /> 
      </asp:GridView> 

答えて

12

はGridView1.RowDataBoundハンドラでそれを入れてみてください。 e.Row.RowTypeを評価してヘッダー行かどうかを判断し、HeaderTextを置き換えます。

​​

あなたが動的に列を作成し、並べ替えを使用している場合は、しかし、あなたは、プレーンテキストにソートするために、それに近づくために、リンクの偶発転換を防ぐために、この方法が必要になります。

protected void GridView1_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.Header) { 
     LinkButton HLink = (LinkButton)e.Row.Cells[0].Controls[0]; 
     HLink.Text = "Last Name"; 
    } 
} 

付きいずれか、ASPXであなたのGridViewのにこの属性を追加します。

OnRowDataBound="GridView1_RowDataBound" 
+0

あなたが少しを与える気だろうがこれについての詳細は?私は答えについても非常に興味があります。たぶん少しのコード? – Jeremy

+0

ありがとう、ジョー。しかし、私はヘッダーテキストを変更することができました:私は、列のヘッダーをクリックしてソート能力を失った。すぐに回答がない場合は、別の質問を投稿することができます。再度、感謝します。 – user776676

+0

更新されたサンプルを参照してください。私が最初に提案したものよりも、HeaderText属性を使用するほうが実際には優れていました。 – Joe

1

私はあなたがヨーヨー内のすべての行データバインドイベント(行ごとの1時間)の間、あなたのヘッダーのテキストをバインドしたいとは思いませんウッレグリッド!

ページのLoadedイベントに接続して、そこにテキストをバインドするだけです。

protected void Page_Load(object sender, EventArgs e) 
{ 
    GridView1.Columns[0].HeaderText = "Last Name"; 
} 
2

ので、これを行う、をPage_Loadに追加するが、それは、列数が0であると文句を言うだろうと

GridView1.Columns[0].HeaderText = "Last Name"; 

は機能しません。

protected void grdProd_Load(object sender, EventArgs e) 
{ 
    grdProd.HeaderRow.Cells[0].Text = "Item"; 
    grdProd.HeaderRow.Cells[1].Text = "Category"; 
} 
関連する問題