紳士淑女の皆様、こんばんは --
最近変更が加えられたなじみのないレガシー アプリケーションのバグを見つけて修正する任務を負っていますが、自分の理論をテストする簡単な方法 (私が知っている) がありません。あなたの集合的な知識が私のテストを検証することを願っています.
このアプリケーションは、データベースからルックアップ リスト (舌ひねり?) を s に遅延読み込みし、 (an )DataTable
にオブジェクトとして格納します。HttpContext.Current.Application
HttpApplicationState
変更が行われる前に、ルックアップ テーブルの 1 つがDropDownList
次の方法で にバインドされていました (考案されました)。
Me._lookupList = TheSession.LookupCache.SomeLookupListName.DefaultView
...
ddl.DataSource = Me._lookupList
DataTable
ここで、'SomeLookupListName' はfromを返す読み取り専用プロパティですHttpContext.Current.Application
。Me._lookupList
変更により、プライベート( DataView
) にバインドされる前にフィルター処理するコードが追加されましたDropDownList
。
Me._lookupList.RowFilter = "SomeTableIDColumn <> " & ...
まだ推測していない場合DataView
は、アプリケーションのすべてのユーザーに対してフィルター処理が行われています。コードを調べたところ、他のほとんどのルックアップ リストがこの方法でローカル メンバーにコピーされていることがわかりました。
Me._lookupList = New DataView(TheSession.LookupCache.SomeLookupListName)
複数のユーザーになりすまして自分のローカル デバッグ セッションを攻撃する方法がわからないので、後者の方法を使用するようにコードを変更すると、実際には前者とは何か違うのでしょうか? の結果をフィルタリングすると、テーブルを でラップする場合とは異なる方法でDataTable.DefaultView
フィルターが実際に基礎に適用されますかDataTable
New DataView(...)
がバインドされた後に行フィルターを単純にクリアするのは理にかなっていますかDropDownList
(悪い解決策のようです)。私は、このアプリケーションが使用する醜い慣習に固執したいと思います。そうすれば、将来、同様のタスクを取得する別の開発者を驚かせることはありません。さもなければ、アプリケーションの状態をバイパスして、データ リポジトリからアイテムを取得するだけです。 .
フィードバックをお待ちしております。