2017-01-01 4 views
0

環境は、ASP 2.0で書かれたやや古いアプリケーションです。リピーター::リピータItemTemplateに

<asp:Repeater ID="Repeater" runat="server" DataSourceID="DS" OnItemDataBound="On_Repeater_ItemDataBound"> 
    <ItemTemplate> 
     <asp:CheckBox ID="CB" runat="server" Text='<%# Eval("My_DB_Field") %>'></asp:CheckBox> 
    </ItemTemplate> 
</asp:Repeater> 

それが正常に動作します

私はASPにDBのソースを表示し、このコードを持っています。 しかし、時々CB.Text = My_DB_Field(現時点で)と時には他のDBフィールド値と等しいようにコードを変更したいと思います。 これをコードの背後のOn_Repeater_ItemDataBoundメソッドに行う必要があります。

しかし、どのように私は、このメソッド内でテンプレート項目DBのフィールドにアクセスすることができますか?言い換えれば

、コード内

Text='<%# Eval("My_DB_Field") %>' 

の背後にあるのと同等とは何でしょうか?しかし、Row.ItemArrayは、オブジェクト[]

あるので、それはDBのフィールドIDをハードコードに非常に危険になります ((System.Data.DataRowView)(e.Item.DataItem)).Row.ItemArray[12] (12):私は私が探していますがを介してアクセスすることができることがわかり

。 DBフィールド名( "My_DB_Field")を介してアクセスできるように、オブジェクトのような辞書があるかどうかを知りたいですか?

答えて

2

あなたはあなたの親切な援助のために多くDataBinder.Eval

string value = DataBinder.Eval(e.Item.DataItem, "My_DB_Field").ToString(); 

または

DataRowView row = e.Item.DataItem as DataRowView; 
string value = row["My_DB_Field"].ToString(); 
+0

Thxをを使用することができます:) –