2

参照:同じリストアイテムで埋められたドロップダウン

トレースとデバッグを1日行った後、3つのDropDownListに同じアイテムのコレクションを入力すると、最後に選択したアイテムが3つのリストすべてに表示されることがようやくわかりました。

これは、リストのプロパティではなく、アイテムのプロパティであるアイテムの「選択性」が原因であるように見えます。

ただし、これは、アイテムがプログラムで選択された 場合にのみ当てはまるようです。

編集#2:誰もが間違った質問に答えているようです:以下は私を混乱させているものです!

ユーザーがコントロールを介してアイテムを選択すると、アプリケーションは意図したとおりに機能しているように見えます。--Webインターフェイスで3つの異なるアイテムを選択すると、正しい3つの異なるアイテムがDBに入力されます。

なぜこれが当てはまるのか誰かが説明できますか?

編集:私が尋ねている質問は、なぜそれがブラウザでまったく機能しないのですか?

4

2 に答える 2

3

これは、同じ ListItem を 2 つの異なる DropDownList コントロールに追加しているためです。それぞれに表示されているオブジェクトは同じであるため、そのオブジェクトの値を変更すると、両方の DropDownList に反映されます。

ドロップダウンは、オブジェクトのコレクションを表示する単なる方法であると考えてください。ドロップダウンを突っ込んで、選択した値を変更するように指示すると、コレクション内のアイテムをループして選択値を変更するだけです。両方のドロップダウンに同じオブジェクトのコレクションを使用する場合、コレクションの値を変更すると、両方のドロップダウンで同じ変更が表示されます。

家に 2 つの窓があり、どちらも同じ犬小屋を見渡すようなものです。窓 A の外を見ている人に犬小屋を青く塗るように言ったとしても、窓 B の外を見ている人に「彼の」犬小屋を塗るように言わなかったとしても、彼はまだ青い犬を見ることになります。家。

于 2009-05-21T20:13:26.260 に答える
0

これは、BindingContextとコレクションに関係しています。コレクションのコピーを作成し、それらにバインドする必要があります。これは、選択した母要素に基づいて正しい子要素を取得できる、母子ビューを簡単にするために行われたと思います。

コレクションがDataTableの場合、ドロップダウンリストをコレクションにバインドすると、そのDefaultViewが使用されます。これを回避するには、テーブルをデータビューにパッケージ化します。

obj.DataSource = new DataView(dataTable、 ""、 ""、DataViewRowState.CurrentRows);

于 2009-05-20T14:45:31.310 に答える