Bound Dropdownlist von „ungenutzt“ Posten zuzüglich aktueller Zeile Artikel in EditItemTemplate von Gridview?

StackOverflow https://stackoverflow.com/questions/2250395

Frage

Ich habe 2 Tabellen mit eindeutigen IDs, die aufeinander abgebildet werden können (eine Tabelle stammt aus einer Datenbank außerhalb meiner Anwendung aber hat Informationen über die gleichen Entitäten ich Tracking). Ich mag eine Benutzeroberfläche schaffen, für die Verknüpfung von „meine“ Aufzeichnungen mit den „anderen“ Einsen, so dass ich die „andere“ IDs in meiner Tabelle für die passenden Datensätze speichern kann. Auf dem Punkt gebracht, ist der Schlüssel UI-Element eine Dropdownlist, die zur Verfügung (dh noch nicht verbunden) Datensätze aus der „anderen“ Tabelle zeigt.

Ich habe eine Gridview für die Anzeige von „my“ Aufzeichnungen in jeder Zeile und eine Spalte ein paar Informationen von dem verknüpften Datensatz in der „anderen“ Tabelle zeigt, falls vorhanden. Die Daten sind über Gebäude und Eigenschaften, so dass es wie folgt aussehen:

Building1   Dallas   TX    Building1_Dallas_TX
Building2   Memphis  TN    Bldg2_Memphis_TN
Building3   Denver   CO
Building4   Seattle  WA
Building5   Boston   MA    Building5_Boston_MA

, wo die ersten 3 Spalten zeigen einige Informationen von „my“ Tisch, und die letzte zeigt die passende Datensatz aus der „anderen“ Tabelle, wo die Datensätze bereits in Verbindung gebracht worden, auch ein Rohling, wo keine Verbindung hergestellt wurde. Meine eigentliche gridview mehr Spalten von „my“ Tabelle hat, aber das ist genug, um die Notwendigkeit zu verdeutlichen.

Wenn Edit (nicht dargestellt) für eine Zeile geklickt wird, möchte ich in der Lage sein, alle 4 Spalten zu bearbeiten. Die ersten 3 sind Textfelder; die letzte Spalte sollte ein Dropdownlist sein, alle die zeigt, unlinked Datensätze aus der „anderen“ Tabelle, und ein „nicht zugeordnet“ Option (als das erste Element in der Liste), so Datensätze kann „unverbundene“ oder einfach links nicht zugewiesen, plus (für die Zeilen, die bereits einen Link eingerichtet), um das verknüpfte Element (es ist „verwendet,“ aber es muss dort sein, damit sie auch weiterhin zu verwenden sie es).

kann ich das richtig in Dropdownlist-Code-behind in dem gridview RowEditing Ereignisse bevölkert (mit Ausnahme des nicht zugeordnet Element, das ich als ListItem in ASPX mit dem AppendDataBoundItems Option auf true eingestellt hinzufügen), und ich kann die richtige SelectedValue eingestellt auf der Databound-Ereignis des ddl, aber beim Postback, wenn ich die Zeile aktualisieren klicken auf, hat die DDL keine Artikel in ihm mehr (mit Ausnahme des nicht zugeordnet Artikel), so dass die Verbindung wird immer gelöscht. Wenn ich einen Link manuell durch direktes Bearbeiten meinen Tisch gesetzt, sieht alles in Ordnung in den Bearbeitungsmodus gehen - die ddl die richtigen Elemente in sich hat und es vorge wählt das richtige Element, aber alle auf der Update-Postbacks verloren. Ich habe versucht, wieder die Bindung den ddl in verschiedenen Phasen des Zyklus Seite aber eindeutig noch recht ich nicht diesen Zyklus verstehe gut genug noch, weil ich nicht herausfinden kann, wie das vom Benutzer gewählten Element zu erhalten, um meine Tabelle zu aktualisieren.

Ich habe auch versucht die DDL mit einem SqlDataSource Selectbevölkern, haben aber kein Glück mit der ID des aktuell verknüpften Datensätze in der anderen Datenbank hatte (auch wenn es in „meine“ Tabelle verfügbar ist, und ich stellte es als Gridview DataKey und fügen sie sich als Control in dem Select für das SqlDataSource. Ohne den derzeit verknüpften Datensatz in der DDL-Posten-Liste, kann ich bestehende Verbindungen nicht halten.

Ich werde ein Codebeispiel sendet jetzt abwehren - diese Nachricht bereits zu lang ist! -., In der Hoffnung, dass die Lösung liegt auf der Hand, was ich beschrieben habe ... Ich glaube nicht, mein Ziel ist seltsam, aber ich bin offen für sonst überredet werden

Vielen Dank im Voraus!

Chris

War es hilfreich?

Lösung

Ok, ich bin nicht in die Details mit dem Code zu gehen, weil vielleicht schon du getan, was ich vorschlagen.

Für die letzte Spalte der Dropdown-Liste, haben Sie eine SQL-Anweisung auszuführen, um die unverbundenen Elemente zu greifen. Verwenden Sie die "WHERE xx NICHT IN". Für die „nicht zugeordnet“ Option, nur ein Element in der Liste in der gleichen Code-Umfang hinzufügen, wie oben.

Die nächste Schritt ist der Gridview der Bearbeitung Ereignisse manuell zu handhaben. Einfügen, Aktualisieren und Löschen.

ich glaube, dass die Art und Weise Sie keine Probleme haben wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top