2013-08-23 6 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

Вы можете добавить элемент управления в RepeaterItem скрытого. Свяжите данные с HiddenField.

ASP

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

С #

RepeaterItem rItem = (RepeaterItem)((Control)sender).NamingContainer; 
var hiddenNetPrice= rItem.FindControl("hiddenNetPrice") as HiddenField; 
var netPrice = hiddenNetPrice.Value; 
Смежные вопросы