私はこれについてかなり長い間検索してきましたが、何も思いつかなかったので、SOの助けを求める時が来ました.
2 つのテーブルの値を同時に検索し、最新のレコードのみを表示する検索機能があります。これらのテーブルの 1 つは、ユーザーが選択する必要があるドロップダウン リストによって選択された 4 つのテーブルのセットから取得されます。これら 4 つのテーブルはすべて、同様のデータに対して異なる列名を持っているため、そのドロップダウンの選択に基づいて Eval() 内に何を入れるかを決定する必要があります。
ListView 内の 1 つのセルに値を設定するコードは次のとおりです。
<%# If(CheckOverrides(Eval("MemUniqID"), "txtFirstName") <> Nothing,
CheckOverrides(Eval("MemUniqID"), "txtFirstName"),
Eval(FindDBField("txtFirstName"))
)
%>
基本的に、一意の識別子と別のパラメーターを関数に渡して、最新のレコード (オーバーライド テーブルに格納されている) を見つける必要があります。関数が何も返さない場合は、元のデータ (4 つのテーブルのいずれかに格納されている) が表示されます。テーブルの正しい列名は、FindDBField 関数から返されます。
これに関する問題は、検索結果が多すぎる場合、データベース接続が終了して閉じてしまうことです。私は、データベースへの呼び出しを削減するためのより良い方法を考え出そうとしています (CheckOverrides() と FindDBFields() へのすべての呼び出しは、db を 1 回クエリし、約 8 つのフィールドがあります。各行の ListView にプルするため、各行に 16 個のクエリが返されます) が、コードを適切に処理できないようです。
助言がありますか?ありがとうございました!