Thomas Bandt

Über mich | Kontakt | Archiv

[ASP.NET 2.0] "Two-way Databinding" mit nem DropDownList-Control

Ich bin gerade mal am erweiterten Rumspielen in Sachen Klickibunti-Datenbindung mit Visual Studio 2005, und dabei an den Punkt gestoßen, wo ich in einem FormView-Control an Stelle einer TextBox eine DropDownList verwenden will/muss.

Die Frage war nun: wie sage ich dem FormView-Control, dass es nun diesen SelectedValue zum Speichern verwenden soll?

Der erste Teil der Lösung liegt im Verständnis des allgemeinen Prozesses, von MS Zwei-Wege-Datenbindung genannt. Die ausführliche Erklärung gibt es hier, kurz gesagt geht es darum, Controls mit für Update oder Insert relevanten Informationen, sprich Werten, von solchen zu unterscheiden, die dafür uninteressant sind, sprich nur zur Darstellung o.ä. verwendet werden.

Das geschieht standardmäßig so:

"CategoryNameTextBox" runat="server" Text='<%# Bind("CategoryName") %>'>

Schlüsselelement ist hier die Methode Bind() - das Control wo Bind() für das entsprechende Feld gesetzt wird, wird auch für das Ermitteln des Wertes herangezogen.

Alles gut und schön, nur kann man einer DropDownList, die sich aus einer eigenen DataSource bedient, zumindest nach IntelliSense keine SelectedValue-Eigenschaft mitgeben - aber da fiel mir was ein:

[ASP.NET 2.0] The 'SelectedValue' property cannot be set declaratively

Genau so funktioniert es in dem Fall jetzt auch:

   ID="CategoryParentIdDropDownList" 
   SelectedValue='<%# Bind("CategoryParentId") %>' 
   runat="server" 
   DataSourceID="SqlDataSource1"
   
DataTextField="CategoryNameDE" 
   DataValueField="CategoryId" />

Merke: IntelliSense sollte man nicht immer blind vertrauen, und es ist gut, wenn man sich alles aufschreibt :-)



« Zurück  |  Weiter »