我遇到了一个很大的问题,花了好几个小时试图让它发挥作用,但没有运气。
我的问题是,我有 2下拉,一旦选择第一个,第二个是ajax填充。但是当我想使用C#codebehind 捕获它时,所选的值将不会反映出来。
有没有正确的方法来执行此操作并捕获第二个下拉列表,仅使用代码,不使用使用isPostBack Request
方法?
如果您查看我的新运行网站,在导航下方,您将看到我的方案。
我必须在此页面上捕获它:http://www.mabinx.com/AddYourWebsite
任何帮助将不胜感激! :)
答案 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控件,使您能够从页面中检索所需的任何值,然后重定向响应以执行搜索。