相互にマップできる一意の ID を持つ 2 つのテーブルがあります (1 つのテーブルはアプリケーションの外部のデータベースから取得されますが、追跡している同じエンティティに関する情報が含まれています)。「自分の」レコードを「他の」レコードにリンクするための UI を提供したいので、一致するレコードのテーブルに「他の」ID を格納できます。簡単に言えば、主要な UI 要素は、「その他」のテーブルから利用可能な (つまり、まだリンクされていない) レコードを表示するドロップダウン リストです。
各行に「自分の」レコードを表示するためのグリッドビューに加えて、「他の」テーブルのリンクされたレコードからの情報を表示する列があります。データは建物とプロパティに関するものなので、次のようになります。
Building1 Dallas TX Building1_Dallas_TX
Building2 Memphis TN Bldg2_Memphis_TN
Building3 Denver CO
Building4 Seattle WA
Building5 Boston MA Building5_Boston_MA
ここで、最初の 3 列は「my」テーブルからの情報を示し、最後の列は「other」テーブルからの一致するレコードを示します。レコードは既にリンクされています。それ以外の場合はリンクが確立されていない空白です。私の実際のグリッドビューには、「私の」テーブルからさらにいくつかの列がありますが、必要性を説明するにはこれで十分です。
行の [編集] (表示されていません) をクリックすると、4 つの列すべてを編集できるようにしたいと考えています。最初の 3 つはテキスト ボックスです。最後の列は、「他の」テーブルからのリンクされていないすべてのレコードを表示するドロップダウンリストである必要があります。また、「未割り当て」オプション (リストの最初の項目として) を追加して、レコードを「リンク解除」するか、単に未割り当てのままにすることができます。すでにリンクが確立されている行) リンクされたアイテム (「使用済み」ですが、引き続き使用できるようにそこにある必要があります)。
gridview RowEditing イベントのコード ビハインドでドロップダウンリストを正しく設定できます (AppendDataBoundItems オプションを true に設定して .aspx に ListItem として追加する Unassigned 項目を除く)、ddl の DataBound に正しい SelectedValue を設定できます。イベントですが、ポストバックでクリックして行を更新すると、ddl には (未割り当てのアイテムを除いて) もうアイテムが含まれていないため、リンクは常にクリアされます。テーブルを直接編集してリンクを手動で設定すると、すべてが編集モードに入ると問題なく表示されます。ddl には正しいアイテムが含まれており、正しいアイテムが事前に選択されますが、更新のポストバックですべてが失われます。ページサイクルのさまざまな段階で ddl を再バインドしようとしましたが、ユーザーが選択したアイテムを取得してテーブルを更新する方法がわからないため、そのサイクルをまだ十分に理解していません。
また、ddl に SqlDataSource SelectCommand を入力しようとしましたが、現在リンクされているレコードの ID を他のデータベースに含めることはできませんでした (「my」テーブルで使用可能であり、GridView DataKey として設定して追加しますSqlDataSource の SelectParameters の ControlParameter としてそれを ddl 項目リストに現在リンクされているレコードがないと、既存のリンクを保持できません。
今のところコード サンプルの送信は保留します。このメッセージはすでに長すぎます。-- 私が説明したことから解決策が明らかであることを願って... 私の目的が奇妙だとは思いませんが、そうでなければ説得されることは受け入れます。
よろしくお願いします!
クリス