Thomas Bandt

Über mich | Kontakt | Archiv

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

Wie man beispielsweise in einem FormView-Control mit einer SelectBox arbeitet welche sich die Daten aus einer dritten DataSource holt und über einen Wert des aktuellen Datensatzes vorbelegt wird, habe ich bereits geschrieben.

Da wusste ich allerdings noch nicht, dass mir das noch Kopfzerbrechen bereiten würde. Denn in meinem konkreten Fall bilde ich mit dieser Vorgehensweise eine Child-Parent-Beziehung ab - über die Selectbox kann der übergerordnete Parent-Datensatz des aktuell ausgewählten zugeordnet werden, eine klassische Geschichte.

Daraus ergibt sich aber natürlich auch die Anforderung, keinen Datensatz auszuwählen. Denn wie sonst will man ein Item in der obersten Obene hinzufügen.

Das Problem hierbei: will man Null bzw. String.Empty an eine Liste binden, in der dieser Wert nicht vorkommt, hagelt es böse Fehlermeldungen. Es war mir auch nicht möglich einen leeren Wert rechtzeitig der DropDownList hinzuzufügen.

Die Lösung: ein eigenes DropDownList-Control, bei dem beim Setzen der SelectedValue-Eigenschaft überprüft wird, ob der Value leer ist. Wenn ja, wird er einfach nicht zugewiesen. Das reicht mir persönlich aus, ggf. kann man das Szenario aber natürlich noch weiter spinnen:

public class DropDownList : System.Web.UI.WebControls.DropDownList
{
   public override string SelectedValue
   {
      get
      {
         return base.SelectedValue;
      }
      set
      {
         if (!string.IsNullOrEmpty(value))
            base.SelectedValue = value;
      }
   }
}

Danke Albert für den Anstoß.

Kommentare

  1. Chris schrieb am Freitag, 21. April 2006 12:11:00 Uhr:

    Probiers mal mit dem Einfügen von "DBNull" anstatt von null.


« Zurück  |  Weiter »