0

<select>iframe 内ではなく、ページ上で直接機能するように 3 レベルのドロップダウン メニューを変更する必要があります (これが現在の方法です)。

このメニューの仕組みは次のとおりです。

  1. ユーザーは最初のドロップダウンで選択を行います

  2. 2 番目のドロップダウンの選択肢は、1 番目のドロップダウンで選択した内容に基づいてフィルタリングされます。ユーザーはこれらの選択肢のいずれかを選択します

  3. 3 番目のドロップダウンの選択肢は、2 番目のドロップダウンで選択された内容に基づいてフィルタリングされます。ユーザーはこれらの選択肢のいずれかを選択します。この最後のドロップダウンは、フォームを送信し、ユーザーを別のページにリダイレクトし、3 つのドロップダウンすべてからの値も渡します。

現在、これは<iframe>、ASP.net データベースにクエリを実行し、選択するたびに自身をリロードする を使用して実現されています。

iframeを使用せずに動作させるには、本当に必要です。これにアプローチする最もエレガントな方法が何であるかわかりません...

4

3 に答える 3

0

ASP.NET Ajax Toolkit を使用することにオープンな場合は、要求どおりに動作するカスケード ドロップダウン コントロールがあります。もう 1 つの利点は、Ajax を使用しているため、ドロップダウンで選択するたびにページをリロードする必要がないことです。

于 2012-06-22T12:50:21.607 に答える
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);
}
于 2012-06-22T12:51:01.710 に答える
0

3 つすべてを UpdatePanel に入れることができます。

あなたの変更により、すでにページが更新されていると確信しています。それらを更新パネルに配置すると、パネルのみが更新され、部分的なページ更新が発生します。

これは ajax を使用して内部的にジョブを実行します。

必要に応じて、更新パネルの例を次に示します。

Ps:Asp.net の作成方法<select>DropDownListコントロールです。選択をドロップダウンリストに変換しない場合は、すでにそれらを使用していることを願っています。

于 2012-06-22T12:53:27.947 に答える