【发布时间】:2009-09-15 05:19:05
【问题描述】:
我不熟悉 asp.net 中继器控件。我在转发器中有两列,数量和 sku。单击按钮时,我想遍历转发器中的行并将每个数量和 sku 传递给一个方法。您如何在转发器中获取这些信息?
【问题讨论】:
我不熟悉 asp.net 中继器控件。我在转发器中有两列,数量和 sku。单击按钮时,我想遍历转发器中的行并将每个数量和 sku 传递给一个方法。您如何在转发器中获取这些信息?
【问题讨论】:
在按钮点击的方法中:
foreach(RepeaterItem item in repeaterControlID.Items)
{
var quantity = item.FindControl("quantityControlID");
var sku = item.FindControl("skuControlID");
}
或者类似的东西。您也可以使用 RepeaterItem 的 Controls 属性来查看它们。
E:我对您的问题的解释是:“在单击按钮引起的回发中,我想遍历转发器中的项目并将这些值传递给方法。”这不适用于填充中继器或在客户端javascript中做某事。
【讨论】:
客户端还是服务器端?假设您的意思是服务器端,请使用转发器的 OnItemDataBound 事件。这将每行触发一次,并将该行的数据作为参数包含在内。
【讨论】:
这取决于您如何在 ItemTemplate 中显示“数量”和“sku”。如果你使用<%# DataBinder.Eval(Container, "quantity") %> 语法,你可以这样做:
foreach(RepeaterItem item in Repeater1.Items)
{
string quantity = ((DataBoundLiteralControl)item.Controls[0]).Text;
string sku = ((DataBoundLiteralControl)item.Controls[1]).Text;
}
如果您可以发布您的 ItemTemplate,这将有所帮助。
【讨论】:
您还需要“键入”控件以访问其属性...
foreach(RepeaterItem item in this.RptTest.Items){
string DdlTestValue = ((DropDown)item.FindControl("DdlTest")).SelectedValue;
string TxtTestValue = ((TextBox)item.FindControl("TxtTest")).Text;
}
【讨论】: