MC, 16:08 niedziela, 14.07.2013 r.
Ilustracja do artykułu: ASP.NET - Kontrolka DropDownList i zastosowanie wobec niej RequiredFieldValidator

ASP.NET - Kontrolka DropDownList i zastosowanie wobec niej RequiredFieldValidator

Notatka na temat tego jak w technologii ASP.NET używać RequiredFiledValidator-a z DropDownList-ami (ComboBox).

W czym problem?

Zazwyczaj definiując kontrolkę DropDownList (często znaną również pod nazwą ComboBox, gdy np. dostarczana jest przed dodatkowe biblioteki), jako pierwszy element dodaje się do kolekcji pole z pustym tekstem i pustą wartością, co powinno zmusić użytkownika do dokonania odpowiedniego wyboru z listy. Jeżeli dodatkowo wybór ten jest obowiązkowy, warto również wzbogacić stronę o kontrolkę RequiredFiledValidator, która po stronie klienta ustali, czy jakaś wartość została wybrana. Bardzo często jednak zapomina się, że z DropDownListami, ta kontrolka walidacyjna działa nieco inaczej niż w przypadku np. TextBox-ów, gdzie sprawdzenie poprawności formularza zakończy się niepowodzeniem, jeśli TextBox objęty walidacją, pozostanie bez treści. Domyślnie pierwszy, pusty element z DropDownList zostanie potraktowany jako poprawny wybór!

Mimo, że wykonywałem takie rzeczy już wielokrotnie, wciąż zdarza mi się zapomnieć, że RequiredFieldValidator specjalnie na takie potrzeby ma stworzoną własność InitialValue, gdzie możemy określić jaką wartość ma element, który nie powinien być traktowany jako pełnowartościowy wybór. I to oczywiście jest prawidłowe podejście do objęcia walidacją kontrolki DropDownList. Wystarczy wzbogacić RequiredFieldValidator o wartość InitialValue odpowiadającej wartości pierwszego, pustego elementu i wszystko będzie działać.

Jeszcze na koniec kilka słów wyjaśnień, ponieważ użyłem tu pewnego spłycenia pisząc, że dodajemy do DDL pierwszy pusty element bez wartości. Oczywiście jest to tylko jeden ze scenariuszy, a nie generalne podejście. Wartość elementu, który nie powinien być traktowany jako wybór, może być dowolna i zależna od zaistniałej sytuacji. Ważne jest natomiast, aby uwzględnić ją we własności InitialValue walidatora.

Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!

Imię:
Treść: