【问题标题】:One DropDownList does not fire SelectedIndexChanged But Other Does一个 DropDownList 不会触发 SelectedIndexChanged 但其他会触发
【发布时间】:2012-11-01 06:13:08
【问题描述】:

我遇到了一个问题,我只能弄清楚为什么会发生这种情况

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

<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

如果我使用 Telik radComboBox 代替 DropDownList 使用相同的设置,它确实可以工作。

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

使用这样的事件处理程序

protected void DocumentLink_Changed(object sender, RadComboBoxSelectedIndexChangedEventArgs e)

不幸的是,我的项目需要使用下拉列表。

这可能是什么原因造成的?

更新

我采用了有效的下拉列表,并为无效的下拉列表使用了 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();
            }   

【问题讨论】:

    标签: asp.net drop-down-menu


    【解决方案1】:

    请检查您在 PageLoad 事件中是否有任何更改下拉列表的语句。如果页面加载事件中有数据绑定语句或选择重置语句,那么请确保它在 if not ispostback 条件 sn-p 下。

    【讨论】:

    • 感谢您的帮助,但情况似乎并非如此,因为两个下拉列表都执行相同的工作流程,一个工作而另一个不工作
    • @MarkHollas 从您发布的代码中,您似乎正在将“PageLink”下拉列表与基于变量“SelectedValue”的两组数据绑定。您是否可以粘贴整个代码以进行页面加载。我还建议启用跟踪并执行一些 trace.write() 语句来检查哪些行已被执行。您可以通过访问 apppath/trace.axd 来查看相同的内容
    • 还要检查绑定数据中是否有重复值。
    猜你喜欢
    • 1970-01-01
    • 2012-01-04
    • 1970-01-01
    • 2011-07-29
    • 1970-01-01
    • 2016-09-05
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    相关资源
    最近更新 更多