2017-09-24 46 views
1

でのHiddenFieldから正しい値を取得します。問題は次のとおりです。私は周りを見て、私はASPの気圧(ので、私の経験が少しある)</p> <p>を勉強私は心の中でpost.Bearに決めたソリューションのカップルを試みた後にASP.NETリピータ

データベースからデータを取得するasp.netリピーターがあります。 私はHiddenFieldを持っています。私はIDを保管しています。背後

<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#コード:コードで

私はそれを試してみました文字列にIDが、すべては私だけ1

ASPコードである、単一のIDを返すことを取得しようと後ろ

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; 
} 
} 

iはforeachの代替を試みたように、pIDにおける結果は、それが前後product IDなければならない同じ1でありますmデータベース。

私は何か間違っていると確信していますが、私はそれを理解できません。あなたの時間は Thxです。

+0

:だから、クリックされた値を得るためにあなたのOnClickイベントにコードを下回るでしょうか? –

+0

また、コードごとに、forループが完了すると、pIDはLASTリピータ項目の非表示フィールドの値を保持します。リピータの最後の項目にprodIDの隠しフィールド値1がありますか? –

+0

はい、私は異なる値を持っています。私の問題への答えは腹が立っています。ありがとう。 –

答えて

0

ボタンクリックでSomethingメソッドは、常に最後の反復値を返すので、forループを使用する必要はありません。ページのHTMLソースを見てみると、あなたはそれぞれのリピーター項目に隠しフィールドに異なる値を参照してくださいか

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