在ajax填充时,在代码隐藏中获取选定的下拉选项

时间:2011-09-26 20:58:41

标签: c# asp.net html ajax drop-down-menu

我遇到了一个很大的问题,花了好几个小时试图让它发挥作用,但没有运气。

我的问题是,我有 2下拉,一旦选择第一个,第二个是ajax填充。但是当我想使用C#codebehind 捕获它时,所选的值将不会反映出来。

有没有正确的方法来执行此操作并捕获第二个下拉列表,仅使用代码,不使用使用isPostBack Request方法?

如果您查看我的新运行网站,在导航下方,您将看到我的方案。

http://www.mabinx.com/

我必须在此页面上捕获它:http://www.mabinx.com/AddYourWebsite

任何帮助将不胜感激! :)

3 个答案:

答案 0 :(得分:1)

将第二个Drop Down放入Update Panel,然后将一个代码隐藏方法分配给属性OnSelectedIndexChange,如下所示:

<asp:UpdatePanel runat="server">
<ContentPanel>
    <asp:DropDownList ID="MYDDL" runat="server" 
    OnSelectedIndexChanged="MethodThatRunsWhenChangeIsMade" AutoPostBack="true">
    </asp:DropDownList>
</ContentPanel>
</asp:UpdatePanel

然后在代码背后:

protected void MethodThatRunsWhenChangeIsMade(object sender, EventArgs e)

{
// Do something, like populate a third dropdown
// If you need to populate another drop down, or something similar, put that in the same update panel
}

答案 1 :(得分:1)

解决方案:

  • 如果使用ajax填充.Net下拉列表,则代码隐藏将不会在回发时获得动态添加的列表项。

  • 您所要做的就是创建.Net隐藏输入标记(runat服务器),并绑定onChange事件,并使用所选下拉选择值填充.Net隐藏字段。

    < / LI>
  • 要在代码隐藏中引用选定的ajax'ed下拉列表项,只需引用.Net隐藏字段值。

答案 2 :(得分:0)

您的点击事件会重定向浏览器以执行搜索:

$('.btnSearch').click(function (e) {
    e.preventDefault();
    window.location = "/Search/" + $('.ddlCountry option:selected').val() + "/" + $('.ddlState option:selected').val() + "/" + $('.ddlCategory option:selected').val();
});

由于页面正在重定向而未回发,因此当页面加载后续时间时,ddlState DropDownList中的选定值将不可用。

不使用JavaScript更改位置,为什么不使用回发的ImageButton控件,使您能够从页面中检索所需的任何值,然后重定向响应以执行搜索。