1

ASP.Net を使用したカスケード ドロップダウン

こんにちは - 簡単に聞こえるかもしれませんが、一部の機能を実現するのに問題があります。状況の添付のスクリーン ショットを参照してください。これは私がやっていることです:

  1. ページの読み込み時に、製品/サービスの最初のドロップダウンを読み込んでいます
  2. Product ドロップダウンの選択に基づいて、2 番目のドロップダウン「Category」にデータを入力しています。これを実現するためにデータベース呼び出しを行っています。
  3. カテゴリの選択に基づいて、価格の 3 番目のドロップダウンを設定しています。このドロップダウンの情報を取得するためにデータベース呼び出しを行っています。

  4. 3 番目の (価格) ドロップダウンの選択に基づいて、パネルを非表示/表示しています。

各ドロップダウンはポストバックを行ってデータベースを呼び出し、後続のドロップダウンの詳細を取得します。

最初の実行時にはすべてが機能しているように見えますが、ドロップダウンを組み合わせようとすると問題が発生します。私が抱えている問題は次のとおりです。

  1. Dropdown1 と 2 から別のオプションを選択すると、一度レンダリングされたパネルが消えません。
  2. その後の実行後、ポストバックごとに値が加算されます。たとえば、製品/サービスのドロップダウンに「Toy Car」という製品がある場合、それが 2 回表示されるようになりました。

  3. ユーザーがデフォルトのオプション「製品の選択」、「カテゴリの選択」などを選択すると、階層全体がリセットされます。たとえば、Product ドロップダウンでの以前の選択が「Toy Car」であった場合、ここではデフォルト オプションの「Select Product」を選択します。「カテゴリ」、価格、パネルの可視性をリセットする必要があります。

これを行う方法を教えてください。

助けてくれてありがとう。

4

2 に答える 2

1

3 つの DropDownLists

1 AutoPostBack="true" を設定します

2 OnSelectIndexChanged を定義します

<asp:dropdownlist id="ddl1" runa="server" Autopostback="true" onselectindexChanged="ddl1_selectindexChanged"/>

<asp:dropdownlist id="ddl2" runa="server" Autopostback="true" onselectindexChanged="ddl2_selectindexChanged"/>

<asp:dropdownlist id="ddl3" runa="server" Autopostback="true" onselectindexChanged="ddl3_selectindexChanged"/>

この戦略で page_load を定義する必要があります

If(! IsPostBack)
{
  //Bind dropdownlist
}

各selectindexChangedで、値を取得してデータベースで選択を実行し、ドロップダウンリストをバインドします。

void ddl1_selectindexChanged(Object sender, EventArgs e) 
{

//Get Selected Values

  //For examlpe you can use SelectedValue property
  var value1 = ddl1.SelectedValue;

  //Request your database

  //And bind your dropdownlist of sub categories


  ...
}

void ddl2_selectindexChanged(Object sender, EventArgs e) 
{
   ...
}


void ddl3_selectindexChanged(Object sender, EventArgs e) 
{
   ..;

}
于 2012-09-03T08:14:08.990 に答える
0

次のことを行います。

1)2番目と3番目のドロップダウンは、ユーザーが最初のドロップダウンを選択するまで無効にし、ユーザーが2番目のドロップダウンを選択したときに2番目のドロップダウンを有効にしてから、3番目のドロップダウンを有効にする必要があります。

2)ポストバック時に、DropDownListのアイテムをクリアすると、それらがデータソースに再度バインドされます。ドロップダウンリストのClearメソッドを呼び出してDropDownListをクリアした後、ドロップダウンごとに関数を作成し、PostBackで呼び出すだけです。

3)階層全体をリセットするには、すべてのドロップダウンのSeletecedIndexをゼロまたは-1に設定します。

于 2012-09-03T08:12:39.423 に答える