0

DropDownListWebユーザーコントロールに3つのコントロールがあり、それらが相互に依存しているとします。

  • カテゴリ
  • ブランド
  • 製品

説明:[ カテゴリ]ドロップダウンリストからカテゴリを選択すると、関連するブランドが[ブランド]に読み込まれます。DropDownList特定のブランドを選択した場合も同じことが起こります。さまざまなページで使用しすぎているため、すべてWebユーザーコントロールに配置されています。すべてのページに同じコードをコピーして貼り付けたい。

問題:ページには、で必要なすべてのデータをフェッチするために追加のパラメーターを必要とするGridViewandDataSourceコントロールが含まれている可能性があり、そのパラメーターは、ProductsコントロールWhere内の選択された製品に依存する可能性があります。DropDownList

質問:では、Products DropDownListから選択した製品の値を取得して、それをSQLDataSource他のコントロールにバインドするにはどうすればよいですかDataSource

私の考え:私はこの問題を次の方法で解決できると信じています。

  • 製品を選択すると更新される静的変数を使用できます。そのフィールド変数はパブリックである可能性があるため、誰もがそれに到達できます
  • 選択した製品DropDownListは、選択した値を取得するためのQueryStringフィールドを作成できます。
  • 同様に、ドロップダウンリストはその場でSession変数を作成でき、値をフェッチできます
  • 多分それは隠されたフィールドを作成することができます。

しかし:まあ、それらは私の考えの一部ですが、私はそれらを実装するのがとても素朴であることに気づきました。この問題を解決するには、エレガントで満足のいくものが必要です。これは、Webユーザーコントロールから外部へのゲートウェイのようなものである必要があります。

たぶん、別のクラスまたはプロパティがゲートウェイソリューションで私を助けることができます。

とにかく、私はあなたの答えを待っています。

4

2 に答える 2

2

質問を正しく理解している場合:

製品のDDLで選択された値を公開するプロパティをユーザーコントロールに追加できます。

製品のDDLで選択された値が変更されたときに発生するイベントをユーザーコントロールから追加して発生させることもできます。product値を含むカスタムイベント引数を作成すると、それをイベントハンドラーに直接渡すことができます。

次に、ページはユーザーコントロールによって発生したイベントを処理し、製品の価値を持ち、グリッドをバインドできます。

于 2010-10-12T17:28:14.623 に答える
0

DropDownList.SelectedIndexChangedイベントを同じ関数にバインドし、各DropDownListのSelectedValueプロパティをテストできます。SelectedValuesが有効な場合は、グリッドをデータソースにバインドします。

これは、データベースにクエリを実行する前に、ユーザーが一定量のデータを入力する必要があったときに行ったことがあります。DropDownListsが有効でない場合は、GridViewにHiddenプロパティを設定し、適切にバインドされたときにリセットしました。

于 2010-10-12T16:20:48.583 に答える