一个DropDownList不会触发SelectedIndexChanged但是其他没有

时间:2012-11-01 06:13:09

标签: asp.net drop-down-menu

我遇到了一个问题,我只能知道它为什么会发生

情况是我有两个下拉列表,两者都以相同的方式设置

<asp:DropDownList ID="DocumentLink" runat="server" AutoPostBack="true" OnSelectedIndexChanged="DocumentLink_Changed">
                </asp:DropDownList>
                <asp:DropDownList ID="PageLink" runat="server" AutoPostBack="true" OnSelectedIndexChanged="PageLink_Changed">
                </asp:DropDownList>

他们的活动看起来像这样

protected void DocumentLink_Changed(object sender, EventArgs e)
    {
        DropDownList DocumentLink = sender as DropDownList;
        LinkParam = DocumentLink.SelectedValue.ToString();
        DescriptionParam = DocumentLink.SelectedItem.Text;
    }
    protected void PageLink_Changed(object sender, EventArgs e)
    {
        DropDownList PageLink = sender as DropDownList;
        LinkParam = PageLink.SelectedValue.ToString();
        DescriptionParam = PageLink.SelectedItem.Text;
    }

对于名为“PageLink”的DropDown,事件处理程序将触发。但是对于“DocumentLink”,事件处理程序不会。在调试中我看到页面加载被触发,但事件在页面加载后下降并且从不进入DocumentLink_Changed

如果我使用telerik radComboBox代替DropDownList使用相同的设置,那么它确实有效。

<telerik:RadComboBox ID="DocumentLink" runat="server" AutoPostBack="true" OnSelectedIndexChanged="DocumentLink_Changed">
                </telerik:RadComboBox>

使用像这样的事件处理程序

protected void DocumentLink_Changed(object sender, RadComboBoxSelectedIndexChangedEventArgs e)

不幸的是,我需要在项目中使用Dropdownlists。

导致这种情况的原因是什么?

更新

我已经使用了工作下拉列表,并使用LINQ绑定作为无效的下拉列表。结果是,PageLink下拉列表开始表现得像'DocumentLink'下拉列表。这让我相信问题可能在绑定方法中,但它们两者非常相似,我确实在下拉列表中看到了结果

这是我的约束力

if (selectedValue == 3)
            {
                DropDownList select = lvLinks.InsertItem.FindControl("PageLink") as DropDownList;
                List<IPW_Links_get_document_listResult> getList = (from i in lqContext.IPW_Links_get_document_list(0, "my stuff") select i).ToList();
                select.DataSource = getList;
                select.DataTextField = "DocumentName";
                select.DataValueField = "FolderPath";
                select.DataBind();

            }
            if (selectedValue == 2)
            {
                DropDownList select = lvLinks.InsertItem.FindControl("PageLink") as DropDownList;
                List<IPW_Links_get_available_pagesResult> getList = (from i in lqContext.IPW_Links_get_available_pages(PortalId) select i).ToList();
                select.DataSource = getList;
                select.DataTextField = "TabName";
                select.DataValueField = "TabPath";
                select.DataBind();
            }   

1 个答案:

答案 0 :(得分:0)

检查PageLoad事件中是否有任何更改下拉列表的语句。如果页面加载事件中有数据绑定语句或选择重置语句,请确保它位于 if ispostback 条件片段下。