环境是用ASP 2.0编写的一个古老的应用程序。
我有这个代码将数据库源显示在ASP:repeater:
<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方法后面的代码中执行此操作。
但是如何访问此方法中的模板项DB字段?
换句话说,等同于
Text='<%# Eval("My_DB_Field") %>'
代码背后的?
我看到我要找的东西可以通过以下方式访问:
((System.Data.DataRowView)(e.Item.DataItem)).Row.ItemArray[12]
但是,Row.ItemArray是一个对象[]
因此,对DB字段ID(12)进行硬编码看起来非常危险。 我想知道是否有像对象这样的字典,所以我可以通过DB字段名称(“My_DB_Field”)访问它?
答案 0 :(得分: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();