[英]Get the correct Value from HiddenField in ASP.NET Repeater
在環顧四周並嘗試了幾種解決方案后,我決定發布。請記住我正在學習asp atm(所以我的經驗很少)
因此,問題如下:
我有一個asp.net轉發器,從數據庫中提取數據。 我有一個HiddenField
,我在其中存儲ID
。
在后面的代碼中,我嘗試將該ID
轉換為字符串,但是我嘗試過的所有操作僅返回一個ID為1的單一ID。
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
。
我確定我做錯了什么,但我不知道是什么。 謝謝你的時間。
在按鈕單擊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;
我知道這很古老,但是萬一有人在尋找答案。
您可以使用CommandArgument
如下:
<asp:Button runat="server" ID="addToCart" Text="Add to cart" OnClick="Something" CommandArgument='<%#Eval("ProductID")%>' />
然后,您可以在“某事”中執行此操作:
string ProductID = (sender as Button).CommandArgument;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.