Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在中继器中访问对象数据_C#_Asp.net_Object_Repeater - Fatal编程技术网

C# 在中继器中访问对象数据

C# 在中继器中访问对象数据,c#,asp.net,object,repeater,C#,Asp.net,Object,Repeater,我的asp.net web表单页上有一个转发器 repeater数据源是“OrderLine”对象的列表 每个repeater项目都有一个TextBox控件,用于显示订单行的数量 当textbox控件中的数量发生更改时,将自动回发以重新计算OrderLine对象的总值和折扣值属性 我的问题是,有没有更好的方法直接访问对象数据,而不是像下面这样获取repeater项的索引并使用它来获取对象列表索引 如果可能的话,我希望直接访问对象,而不是创建临时变量 protected void txtLineQ

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

repeater数据源是“OrderLine”对象的列表

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

当textbox控件中的数量发生更改时,将自动回发以重新计算OrderLine对象的总值和折扣值属性

我的问题是,有没有更好的方法直接访问对象数据,而不是像下面这样获取repeater项的索引并使用它来获取对象列表索引

如果可能的话,我希望直接访问对象,而不是创建临时变量

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
}
如果我错过了任何需要的信息,请让我知道


谢谢

您可以向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>
RepeaterItem rItem = (RepeaterItem)((Control)sender).NamingContainer;
var hiddenNetPrice= rItem.FindControl("hiddenNetPrice") as HiddenField;
var netPrice = hiddenNetPrice.Value;