2014-02-10 73 views
2

我一直在尋找這個答案的網站和Stackoverflow,我嘗試了一些,但沒有成功。我的問題:我有一個Datalist頁腳內的下拉列表。我的頁面的AutoEventWireup設置爲true。我的Dropdown的autopostback設置爲true。我將事件綁定在datalist的itemcreation上。下拉列表獲取回發但不會調用SelectedIndexChanged事件中設置的函數。SelectedIndexChanged事件在Datalist的頁腳內部沒有觸發

上創建:

protected void dlCartItemsMonetary_ItemCreated(object sender, DataListItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListItemType.Footer) 
    { 
     DropDownList combo = (DropDownList)e.Item.FindControl("ddlDeliveryService"); 
     if (combo != null) 
     { 
      combo.SelectedIndexChanged += new EventHandler(ddlDeliveryService_SelectedIndexChanged); 
     } 
    } 
} 

下拉:

<asp:DropDownList ID="ddlDeliveryService" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlDeliveryService_SelectedIndexChanged" EnableViewState="true"> 

它做回發,但它doesn't進入ddlDeliveryService_SelectedIndexChanged功能。

任何人都可以給我一些關於如何解決它的提示嗎?

在此先感謝

+0

你真的確定你正在爲下拉列表選擇的索引更改事件添加事件haldler嗎?因爲在添加事件處理程序之前您有某種狀況! –

+0

我是。我調試了它,程序確實通過了if條件,因此執行了「combo.SelectedIndexChanged + = new EventHandler(ddlDeliveryService_SelectedIndexChanged);」命令。 –

回答

1

已解決!

我的問題和其他許多問題是我在每次回發時都設置了DataSource和DataBinding DataList。只要我添加回發驗證,事件就開始啓動。下面的代碼:

if (this.Page.IsPostBack == false) 
    { 
     dlCartItemsMonetary.DataSource = list; 
     dlCartItemsMonetary.DataBind(); 
    } 

如果您有沒有事件射擊檢查你的代碼相同的問題同樣的問題!

感謝jpartjh對您的評論,這讓我想起了頁面的生命週期。

相關問題