0

aspx ページにレコードを読み込んでいます。私は2つのコンボを持っています。(この場合は AJAX コンボボックス) 2 番目は、最初の ID に基づいてロードされます。

クエリ文字列でページにキーを渡すと、データをクラスに取得し、クラスからページ フィールドにデータを入力します。Carrier.selectedvalue = class.1value を設定すると、選択が正しく表示されます。product.selectedvalue = class.2value を設定すると、選択が行われません。(商品は何も選択されていません)

製品コンボボックスのリストをドロップダウンすると、最初のコンボボックス (キャリア) に基づいて正しいデータがロードされます。

私は2つの方法を試しました:

1) キャリア コンボックスから選択した値に基づいて、製品の SQL データセット (2 番目のデータセット) をクエリします。

どちらのメソッドも、必要な値を含む 2 番目のコンボックスをロードします。どちらの方法でも、ページがレンダリングされると、選択した値を製品コンボボックスに表示するのに役立ちません。

これはすべて page_load で行っていることに注意してください

- ご覧いただきありがとうございます。

4

2 に答える 2

0

Gthompson83 は私を正しい軌道に乗せました。それはデータバインディングの問題でした。次のように、製品のコンボボックス (2 番目のコンボボックス) のセットをデータバインド イベントに移動しました。

    protected void cboProduct_DataBound(object sender, EventArgs e)
    {
        // Set the Product cbo 
        cboProduct.SelectedValue = c.Product_ID.ToString();
    }

それだけです。クラスは、クエリ文字列からの値に基づいて Page_Load イベントで引き続き設定されます。DataBound イベントが発生したら、クラスに配置した値を使用して製品コンボボックスの値を設定します。

役立つ情報は次のとおりです: データ バインド コントロールのデータ バインディング イベント

上記のリンク先のページには、「ネストされたデータ バインド コントロール」に関する適切なセクションがあります。

私はその例に完全に従わなかったことに注意してください...私はプログラムで2番目のコンボボックスでデータバインドを行いませんでした... DataBoundイベントをキャッチするだけで、選択した値を設定できました。

于 2013-08-15T15:01:00.747 に答える
0

問題は、Page_Load ですべてを実行していることです。問題を回避するには、次のイベントで次の順序で作業を行います。

  1. Page_Init: キャリア アイテムの入力
  2. Page_Init: キャリア選択値の設定
  3. Page_Load: アイテムをクリアProduct.Items.Clear()
  4. Page_Load: 商品アイテムの入力
  5. Page_Load: 商品選択項目の設定

ページ イベントを効果的に使用する方法については、次のガイドを参照してください。

于 2013-08-14T21:00:26.810 に答える