Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.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# 从ASP.NET Repeater中的HiddenField获取正确的值_C#_Asp.net_Repeater_Hidden Field - Fatal编程技术网

C# 从ASP.NET Repeater中的HiddenField获取正确的值

C# 从ASP.NET Repeater中的HiddenField获取正确的值,c#,asp.net,repeater,hidden-field,C#,Asp.net,Repeater,Hidden Field,在我环顾四周并尝试了一些解决方案后,我决定发布。请记住,我正在学习asp atm(所以我的经验很少) 因此,问题如下: <asp:Button runat="server" ID="addToCart" Text="Add to cart" OnClick="Something" CommandArgument='<%#Eval("ProductID")%>' /> 我有一个asp.net中继器从数据库中提取数据。 我有一个HiddenField,在那里我存储了一个ID

在我环顾四周并尝试了一些解决方案后,我决定发布。请记住,我正在学习asp atm(所以我的经验很少)

因此,问题如下:

<asp:Button runat="server" ID="addToCart" Text="Add to cart" OnClick="Something" CommandArgument='<%#Eval("ProductID")%>' />
我有一个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();
受保护的无效内容(对象发送方、事件参数){
字符串pID=“”;
对于(int i=0;i
当我尝试foreach替代方案时,
pID
中的结果是相同的1,其中它应该是数据库中的
产品ID

我肯定我做错了什么,但我不知道是什么。
谢谢您的时间。

在按钮单击
某物
方法中,无需对
循环使用
,因为它总是返回最后一次迭代值。因此,在您的
OnClick
事件中使用以下代码来获取单击值:

//Get value from each button pressed in the RepeaterItem
var repeaterItem = ((Control)sender).NamingContainer;
string pID = (repeaterItem.FindControl("prodID") as HiddenField).Value;

在按钮单击
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")%>' />

我知道这很古老,但万一有人在寻找答案

您可以按如下方式使用
CommandArgument

<asp:Button runat="server" ID="addToCart" Text="Add to cart" OnClick="Something" CommandArgument='<%#Eval("ProductID")%>' />

当您查看页面的HTML源代码时,是否在每个转发器项中看到隐藏字段的不同值?此外,根据您的代码,在完成for循环时,pID将保留最后一个转发器项中隐藏字段的值。repeater中的最后一项是否具有prodID隐藏字段值1?是,我得到了不同的值。我的问题的答案如下。谢谢。当您查看页面的HTML源代码时,您是否看到每个转发器项中隐藏字段的不同值?此外,根据您的代码,在完成for循环时,pID将保留最后一个转发器项中隐藏字段的值。repeater中的最后一项是否具有prodID隐藏字段值1?是,我得到了不同的值。我的问题的答案如下。谢谢