【问题标题】:SelectedIndexChanged event not firing inside the footer of a DatalistSelectedIndexChanged 事件未在 Datalist 的页脚内触发
【发布时间】:2014-02-10 11:06:05
【问题描述】:

我一直在网上和 Stackoverflow 上搜索这个答案,我尝试了一些但没有成功。我的问题:我在 Datalist 的页脚中有一个下拉列表。我页面的 AutoEventWireup 设置为 true。我的 Dropdown 的自动回发设置为 true。我在数据列表的项目创建上绑定事件。下拉列表确实获得了回发,但没有调用在 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 函数。

谁能给我一些关于如何解决它的提示?

提前致谢

【问题讨论】:

  • 您确定要为下拉列表选择的索引更改事件添加事件处理程序吗?因为在添加事件处理程序之前你有某种条件!!
  • 我是。我已经对其进行了调试,并且程序确实通过了 if 条件,因此执行了“combo.SelectedIndexChanged += new EventHandler(ddlDeliveryService_SelectedIndexChanged);”命令。

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


【解决方案1】:

已解决!

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

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

如果您遇到事件未触发的相同问题,请检查您的代码是否存在相同问题!

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多