2014-02-10 42 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对您的评论,这让我想起了页面的生命周期。

相关问题