2012-11-07 36 views
2

我想在用戶更改下拉列表的selectedIndex.Now時在數據庫中執行一些操作。如何在Repeater內下拉時觸發事件

<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元素中。我如何實現這一功能?

+3

查克·諾里斯可以直接得到的隱藏字段值 – Blachshma

回答

6
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"));  
     } 
} 
+0

感謝潘卡,這真的幫助我。 –

1

可以綁定GiftVoucher.ID值下拉的自定義屬性並跳過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"]; 
} 
+0

我猜Eval不適用於我的情況,因爲我已將綁定到下一個數據源。感謝您的回答。 –

相關問題