2009-05-20 9 views
2

も参照してください:Dropdowns filled with same list itemDropDownListコントロール、リストアイテムとのSelectedItem

をトレースとデバッグの日の後、私は最終的にアイテムの同じコレクションで3 DropDownListsを投入すると、すべての3つのリストに表示される最後に選択した項目を引き起こすことを考え出しました。

これは、アイテムの「selectedness」がリストのプロパティではなく、アイテムのプロパティであるために発生します。

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

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

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

誰にもこのような理由が説明できますか?

EDIT:私が求めている質問は、ブラウザでは全く機能しません。

答えて

3

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

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

これは、同じ犬の家を見ている家に2つの窓があるようなものです。ウインドウAを見ている人に犬の家を青く塗ってもらうように言うと、ウインドウBを見ている人に "彼"の犬の家を描こうとしていないのに、彼はまだ青い犬を見るつもりです家。

0

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

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

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

関連する問題