.net 如何访问对象I';您是否已分配给Repeater.DataSource?

.net 如何访问对象I';您是否已分配给Repeater.DataSource?,.net,asp.net,vb.net,repeater,.net,Asp.net,Vb.net,Repeater,我有一个中继器控件,绑定到产品列表 Repeater.DataSource = ProductRepository.GetProducts(); 稍后(在另一个模块中),我需要从Repeater检索产品,但它似乎不适用于Repeater.Item.DataItem(随后为null)。 我的问题是,中继器项目中是否有提及产品的内容?或者我必须自己通过id字段等进行设置。获取“底层”产品对象的最简单方法是什么?什么时候需要产品项?如果为中继器项数据绑定、创建等事件附加了事件处理程序,则将在每个事件

我有一个中继器控件,绑定到产品列表

Repeater.DataSource = ProductRepository.GetProducts();
稍后(在另一个模块中),我需要从Repeater检索产品,但它似乎不适用于Repeater.Item.DataItem(随后为null)。
我的问题是,中继器项目中是否有提及产品的内容?或者我必须自己通过id字段等进行设置。获取“底层”产品对象的最简单方法是什么?

什么时候需要产品项?如果为中继器项数据绑定、创建等事件附加了事件处理程序,则将在每个事件中获取产品项。

否中继器项中没有对产品的引用。您必须通过repeater项进行迭代,然后自己创建对象。

数据绑定用于填充控件。用数据填充控件后,将释放底层数据。如果要访问用户输入的数据,可以通过中继器中的行和包含值的控件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.
}

希望这有帮助

您可以在中继器的ItemDataBound事件中访问Repeater.Item.DataItem。否则为空。您的数据不应该通过回发来保留,但您的控件状态是正确的。因此,最好的办法是将数据保持在会话或视图状态。

它实际上是在savebutton Click事件中(保存页面时),在这种情况下,您必须使用隐藏字段并为每个项目设置所需的值。在保存时,单击遍历每个项目并获取值。在这些情况下,隐藏字段是一种方法。