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
}

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

谢谢

4

1 回答 1

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;
于 2013-08-29T12:13:07.040 回答