DropDownList in DetailsView - eine Erfolgsgeschichte...

Written on May 12, 2005

Meine Begeisterung für ASP.NET 2.0 steigert sich momentan im Minutentakt - aktuellster Anlass:

Ich verwende eine DropDownList in einer DetailsView. Der selektierte Wert der DropDownList soll beim Anlegen eines neuen Records mittels DetailsView in den neuen Record einfließen.

Unter ASP.NET 1.1 ist hier einiges an Code notwendig, um das zu realisieren.

Mit ASP.NET 2.0 reduziert sich dies auf wenige Klicks wie das folgende Beispiel zeigt.

Zunächst definiere ich zwei SqlDataSource's:

aspnet2detailsview0.jpg

sdsProductProperties beinhaltet die Haupttabelle, aus der die DetailsView gespeist wird bzw. in die die neuen Werte geschrieben werden.

sdsProductPropertyTypes beinhaltet die Daten für die DropDownList.

Die Spalte "ProductPropertyTypeOf" in sdsProductProperties soll dabei später den Wert der Spalte "ProductPropertyTypeID" aus sdsProductPropertyTypes beinhalten. Ein einfacher Fremdschlüssel also.

Die DropDownList ist bereits in die InsertTemplate der DetailsView integriert und an die Datenquelle sdsProductPropertyTypes gebunden:

Nun bearbeite ich die Zeile (Spalte) mit dem Datentyp:

Dort wiederum bearbeite ich die DataBindings für die DropDownList:

Hier erstelle ich nun für die Property "SelectedValue" eine Custom Expression". Diese beinhaltet den Namen der Spalte aus der 1. Datenquelle (sdsProductProperties), also "ProductPropertyTypeOf" - mittels der Bind-Expression stelle ich damit die Fremdschlüssel-Beziehung der Datenbanktabellen her. Das DataValue-Feld der DropDownList wurde vorher bereits dem Primärschlüssel (ProductPropertyTypeID) von sdsProductPropertyTypes zugeordnet.

That's it. Die DetailsView sieht im Browser nun wie folgt aus (mit bereits eingetippten Daten):

Nach einem Klick auf den Insert-LinkButton sehen die hinzugefügten Daten in einem GridView so aus:

Ist das genial? Ich behaupte: ja!

Auch begeistert? Mehr ASP.NET 2.0 KnowHow gibt's beim Community Boot Camp 2005 in Bad Ischl!