2017-01-01 42 views
0

環境是一個用ASP 2.0編寫的古老應用程序。試圖訪問ASP後面的代碼:Repeater ItemTemplate

我有這樣的代碼,顯示DB源到ASP:轉發:

<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> 

它工作正常。 但是,我想更改代碼,以便有時CB.Text = My_DB_Field(與現在一樣),有時它等於另一個DB字段值。 所以我需要在代碼背後的On_Repeater_ItemDataBound方法中做到這一點。

但我怎樣才能訪問此方法內的模板項目數據庫字段?

換句話說,什麼是

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

在代碼背後的相同呢?

我看到,我正在尋找可以通過以下方式訪問: ((System.Data.DataRowView)(e.Item.DataItem)).Row.ItemArray[12] 然而,Row.ItemArray是一個Object []

所以看起來極端危險的硬編碼DB場ID(12) 。 我想知道是否有像對象字典,所以我可以通過數據庫字段名稱(「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這麼多的善意幫助:) –