2011-02-17 10 views
0

私はGridViewのとOnRowDataBoundイベントを持っているとして列には、この機能にリンクされている:このコードは、データ内のオブジェクトのプロパティの値を調べGridViewの行の評価:名パラメータの代わりにインデックス

if (e.Row.RowType == DataControlRowType.DataRow) 
{ 
    ThisRow = e.Row.DataItem as MyObjectModel; 

    if (ThisRow.Property1 == null) { e.Row.Cells[5].Text = "-"; } 

ソースであり、nullの場合は、カラム5の " - "を表示するためにnullを変換します。問題は、グリッドビューのカラムの順序を変更すると、他のすべての変更のインデックスを変更する必要があるということです。 私がしたいのは、 "e.Row.Cells [5] .Text"というステートメントを "列ヘッダーがxyzのセル"と変更することです。

提案がありますか?

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

+0

eが現在の行の値を返すため、これは難しい – Student

答えて

0

私はあなたのコードを背後ではなくグリッドビューのコードで扱うほうが良いかもしれないと思います。

ここでは、小鳥の例です。必要に応じて自由に編集してください。

<asp:TemplateField HeaderText="Likes Ponies?"> 
    <ItemTemplate> 
     <asp:Label ID="uxLikesPoniesLabel" runat="server" Text=’<%# 
     DataBinder.Eval(Container.DataItem, "FavoritePonies").ToString() == "" ? 
     "I like " + DataBinder.Eval(Container.DataItem, "FavoritePonies") + " Ponies!" : 
     "-" 
     %>’ /> 
    </ItemTemplate> 
    </asp:TemplateField> 

ここではC#(boolean condition) ? "value if true" : "value if false"を使用しています。

このコードでは、特定の行のFavoritePonies列が(NULL値が空の文字列として表示されるため)""であるかどうかを確認し、そうであれば " - "を表示します。それがヌルでない場合、それはDataBinder.Eval(Container.DataItem, "FavoritePonies")のデータベースにもともとあったものを「私はポニーが好き!」と表示します。

関連する問題