SelectedIndexChanged事件未在Datalist的页脚内触发

时间:2014-02-10 11:06:06

标签: c# asp.net drop-down-menu webforms datalist

我一直在网上和Stackoverflow上搜索这个答案,我尝试了一些但没有成功。我的问题:我在Datalist的页脚中有一个下拉列表。我的页面的AutoEventWireup设置为true。我的Dropdown的autopostback设置为true。我将事件绑定在datalist的itemcreation上。下拉列表确实获得了回发但未调用SelectedIndexChanged事件中设置的函数。

在创建时:

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">

它执行回发但它没有输入ddlDeliveryService_SelectedIndexChanged函数。

有人可以给我一些如何解决的提示吗?

提前致谢

1 个答案:

答案 0 :(得分:1)

解决!

我的问题和许多其他问题是我在每次回发时都将DataSource和DataBinding设置为DataList。一旦我添加了回发验证,事件就会开始触发。代码如下:

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

如果您遇到同样的问题而未触发事件,请检查相同问题的代码!

感谢jpartjh的评论,这让我想到了页面的生命周期。