2013-08-23 19 views
3

我在我的asp.net網頁表單頁面上有一箇中繼器。訪問中繼器中的對象數據

中繼器數據源是「OrderLine」對象的列表。

每個中繼器項目都有一個TextBox控件,用於顯示訂單行的數量。

當文本框控件中的數量發生變化時,會自動回發來重新計算OrderLine對象的總價值和折扣價值屬性。

我的問題是,有沒有更好的方式來直接訪問對象數據,而不是獲取中繼器項目的索引,並使用它來獲取像下面的對象列表索引?

我想直接訪問對象,如果可能的話,而不是創建臨時變量。

protected void txtLineQuantity_TextChanged(object sender, EventArgs e) 
{ 
    RepeaterItem rItem = (RepeaterItem)((Control)sender).NamingContainer; 
    int i = rItem.ItemIndex; 

    decimal netPrice = OrderLines[i].NetPrice; 
    decimal netTotal = OrderLines[i].NetTotal; 
    int qty = OrderLines[i].Quantity; 
    decimal weight = OrderLines[i].Weight; 

    TextBox txtLineQuantity = (TextBox)rItem.FindControl("txtLineQuantity"); 

    //... do calculations and bind data to repeater control 
} 

如果我錯過了真實需要請讓我知道任何信息...

感謝

回答

0

您可以添加一個HiddenField控件來的RepeaterItem。將數據綁定到HiddenField。

ASP

<asp:Repeater runat="server" ID="repeater"> 
    <ItemTemplate> 
      <asp:HiddenField ID="hiddenNetPrice" runat="server" Value='<%# Eval("NetPrice") %>' /> 
      <!--Other Controls 
    </ItemTemplate> 
</asp:Repeater> 

C#

RepeaterItem rItem = (RepeaterItem)((Control)sender).NamingContainer; 
var hiddenNetPrice= rItem.FindControl("hiddenNetPrice") as HiddenField; 
var netPrice = hiddenNetPrice.Value;