获取从HiddenField正确的价值
问题描述:
后我环顾四周,并试图一对夫妇的解决办法,我决定post.Bear记住,我正在学习ASP ATM(所以我的经验是少)获取从HiddenField正确的价值
所以问题如下:
我有一个asp.net转发器从数据库中提取数据。 我有一个HiddenField
我在那里存储ID
。
在后面的代码我试图获取ID
为字符串,但一切我想它只返回我一个ID是1
asp代码:
<asp:Repeater runat="server" ID="dataRepeater" EnableTheming="true">
<ItemTemplate>
<asp:HiddenField ID="prodID" runat="server" Value='<%#Eval("ProductID")%>' />
<asp:Button runat="server" ID="addToCart" Text="Add to cart" OnClick="Something" />
</ItemTemplate>
</asp:Repeater>
C#代码隐藏:
dataRepeater.DataSource = dt;
dataRepeater.DataBind();
protected void Something(object sender, EventArgs e) {
string pID = "";
for (int i = 0; i < dataRepeater.Items.Count; i++) {
var item = dataRepeater.Items[i];
var hf = item.FindControl("prodID") as HiddenField;
pID = hf.Value;
}
}
正如我试图在foreach替代方案中,结果pID
是相同的1,在那里它应该是往复product ID
在数据库中。
我相信我做错了什么,但我无法弄清楚什么。 Thx为您的时间。
答
在按钮单击Something
方法中,不需要使用for
循环,因为它始终返回最后一个迭代值。因此,使用下面的代码在你的OnClick
事件获得点击值:
//Get value from each button pressed in the RepeaterItem
var repeaterItem = ((Control)sender).NamingContainer;
string pID = (repeaterItem.FindControl("prodID") as HiddenField).Value;
当你看网页的HTML源代码,你看到不同的值在每个转发器项目的隐藏字段? –
此外,根据您的代码,完成for循环后,pID将保留LAST转发器项目中隐藏字段的值。中继器中的最后一项是否具有prodID隐藏字段值1? –
是的,我得到了不同的价值观。我的问题的答案是波纹管。谢谢。 –