2011-07-15 19 views
0

我有我綁定到產品列表如何訪問我已分配給Repeater.DataSource的對象?

Repeater.DataSource = ProductRepository.GetProducts(); 

後來(在其他模塊),Repeater控件,我需要從直放站檢索的產品,但它似乎沒有與Repeater.Item工作。 DataItem(然後是null)。 我的問題是,是否有任何對Repeater-Items產品的參考?或者我必須通過id字段等自己設置它。獲得「基礎」產品對象的最簡單方法是什麼?

回答

0

否沒有參考中繼器項目中的產品。您必須遍歷中繼器項目並自己創建對象。

0

什麼時候需要產品項目?如果您有中繼器項目數據綁定的附加事件處理程序,創建等事件,那麼您將在每個事件中獲得產品項目。

+0

它實際上是在savebutton-Click事件中(當保存頁面時) – AGuyCalledGerald

+1

在這種情況下,您必須使用隱藏字段併爲每個項目設置所需的值。在保存上單擊遍歷每個項目並獲取值。 – ShankarSangoli

+0

好的,我使用隱藏字段,然後 – AGuyCalledGerald

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

希望這有助於!

0

您可以在Repeater的ItemDataBound事件中訪問Repeater.Item.DataItem。否則它是空的。你的數據不應該被後期保留,但你的控制狀態。所以你最好的辦法是保持你的數據在會話或視圖狀態。