如何访问我分配给Repeater.DataSource的对象?

时间:2011-07-15 14:43:05

标签: .net asp.net vb.net repeater

我有一个Repeater Control,它绑定到产品列表

Repeater.DataSource = ProductRepository.GetProducts();

稍后(在另一个模块中),我需要从Repeater中检索产品,但似乎不能使用Repeater.Item.DataItem(然后为null)。 我的问题是,是否有任何对Repeater-Items中产品的引用?或者我必须通过id字段等自己设置它。获取“底层”产品对象的最简单方法是什么?

4 个答案:

答案 0 :(得分:0)

您何时需要产品?如果您为转发器项目数据绑定附加事件处理程序,创建了等事件,那么您将在每个事件中获得产品项目。

答案 1 :(得分:0)

没有对转发器项目中的产品的引用。您必须通过转发器项目进行迭代并自己创建对象。

答案 2 :(得分:0)

数据绑定用于填充控件。一旦控件填充了数据,就会处理基础数据。如果要访问用户输入的数据,可以通过转发器中的行和控件ID包含的值进行引用。如果您需要访问不希望向用户显示的数据,请将其放在隐藏的标签中。

foreach (RepeaterItem item in Repeater.Items)
{
    string value1 = (item.FindControl("MyTextBox1") as TextBox).Text;
    string value2 = (item.FindControl("MyTextBox2") as TextBox).Text;
    string value3 = (item.FindControl("MyLabel1") as Label).Text;

    // do something with retrieved values.
}

希望这有帮助!

答案 3 :(得分:0)

您可以在Repeater的ItemDataBound事件中访问Repeater.Item.DataItem。否则为空。您的数据不应该使用回发保留,但您的控件会声明。因此,您最好的方法是将数据保存在会话或查看状态中。