动态ASP表单发布 - 不使用iframe

时间:2012-06-22 12:42:59

标签: asp.net forms post iframe

我需要修改3级下拉列表<select>菜单,以便直接在页面上运行,而不是在iframe内部运行(这就是我们目前的工作方式)。

以下是此菜单的工作原理:

  1. 用户在第一个下拉列表中进行选择

  2. 第二个下拉菜单中的选项会根据第一个中选择的内容进行过滤;用户从这些选择之一中选择

  3. 根据第二个选项中选择的内容过滤第三个下拉菜单中的选项;用户从这些选择中选择一个;最后一个下拉列表提交表单并将用户重定向到另一个页面,同时传递所有三个下拉列表中的值。

  4. 现在,这是使用查询ASP.net数据库并在每次选择后重新加载的<iframe>来完成的。

    我真的需要它在不使用iframe的情况下工作。不确定最优雅的方法是......

3 个答案:

答案 0 :(得分:0)

如果您愿意使用ASP.NET Ajax工具包,那么他们会有cascading dropdown control来完成您的要求。另一个好处是,因为它使用Ajax,所以在下拉列表中的每次选择后都不必重新加载页面。

答案 1 :(得分:0)

我认为你甚至可能需要在DropDownList控件上使用'onSelectIndexChanged`。类似......

<asp:DropDownList id="ddl1" runat="server"  OnSelectedIndexChanged="ddl1_OnSelectedIndexChanged"></asp:DropDownList>
<asp:DropDownList id="ddl2" runat="server"  OnSelectedIndexChanged="ddl2_OnSelectedIndexChanged"></asp:DropDownList>
<asp:DropDownList id="ddl3" runat="server"  OnSelectedIndexChanged="ddl3_OnSelectedIndexChanged"></asp:DropDownList>

Page_Load()
{
    if(!IsPostBack)
    {
        ddl1.DataSource = getdata();
        ddl1.DataBind();
}

protected void ddl1_onSelectedIndexChanged(object sender, EventArgs e)
{
    ddl2.DataSource = getData(ddl1.SelectedValue);
    ddl2.DataBind()
}
protected void ddl1_onSelectedIndexChanged(object sender, EventArgs e)
{
    ddl3.DataSource = getData(ddl2.SelectedValue);
    ddl3.DataBind()
}
protected void ddl3_onSelectedIndexChanged(object sender, EventArgs e)
{
    Response.Redirect("SomePage.aspx?ddl1="+ddl1.SelectedValue+"&ddl2="+ddl2.SelectedValue+"&ddl3="+ddl3.SelectedValue, true);
}

答案 2 :(得分:0)

您可以将其中所有3个放入UpdatePanel。

我确定您的更改已经在刷新页面。 将它们放在更新面板中将仅刷新面板,从而导致部分页面更新。

这使用ajax在内部完成工作。

如果您需要,可以使用update panel example

P.s。:Asp.net创建<select>的方法是DropDownList控件。我希望你已经在使用那些,如果没有将你的选择转换为下拉列表。