2017-01-01 26 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这么多的善意帮助:) –

相关问题