在转发器中访问对象数据

时间:2013-08-23 10:28:48

标签: c# asp.net object repeater

我的asp.net网页表单上有一个转发器。

转发器数据源是“OrderLine”对象的列表。

每个转发器项目都有一个TextBox控件,用于显示订单行的数量。

当更改文本框控件中的数量时,会有一个自动回发来重新计算OrderLine对象的total和discount值属性。

我的问题是,是否有更好的方法直接访问对象数据而不是获取转发器项的索引并使用它来获取如下所示的对象列表索引?

如果可能,我想直接访问该对象,而不是创建临时变量。

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
}

如果我错过了任何需要的信息,请告诉我......

由于

1 个答案:

答案 0 :(得分:0)

您可以向RepeaterItem添加HiddenField控件。将数据绑定到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;