簡體   English   中英

如何在Repeater中的下拉列表更改時觸發事件

[英]How to fire an event when dropdown inside Repeater changes

當用戶更改下拉列表的selectedIndex時,我想在我的數據庫中執行一些操作。現在我有以下內容。

<td class="shop-item-qty">
<asp:DropDownList ID="qtyDropDownList" OnSelectedIndexChanged="changeCount" AutoPostBack="true"  runat="server"/>
<asp:HiddenField ID="ItemId" runat="server" Value='<%#Eval("GiftVoucher.ID") %>'/>
</td>

我想要的是在changeCount方法中獲取隱藏字段值。 問題是我無法直接獲取隱藏字段值,因為此代碼位於Repeater元素中。 我怎樣才能實現這個功能?

protected void qtyDropDownList_SelectedIndexChanged(object sender, EventArgs e)
{
      DropDownList control = (DropDownList)sender;

      RepeaterItem rpItem = control.NamingContainer as RepeaterItem;
      if (rpItem != null)
      {
         HiddenField hiddenField = ((HiddenField)rpItem.FindControl("ItemId"));    
      }
}

您可以將GiftVoucher.ID值綁定到DropDown的自定義屬性並跳過HiddenField:

<asp:DropDownList runat="server" ID="qtyDropDownList" OnSelectedIndexChanged="changeCount" AutoPostBack="true" data-itemId='<%# Eval("ID") %>' />

protected void changeCount(object sender, EventArgs e)
{
    var id = ((DropDownList)sender).Attributes["data-itemId"];
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM