Apagar items de uma dropdownlist e manter um default

Uma situação vulgar é termos uma DropDownList com uma lista de opções retornadas da base de dados para o utilizador poder seleccionar uma delas.

Para evitar que uma das opções está seleccionada por defeito, recorre-se normalmente à opção “– Seleccione –” ou “– Escolha uma opção –“, etc etc etc.

Para evitar que tenhamos um UNION na nossa query que retorna essas mesmas opções ou mesmo um registo na tabela para tal, adicionando ao output a tal opção “default”, podemos adicionar esse mesmo item à DropDownList.

image

Para actualizar os dados, recorrendo ao metodo DataBind(), fará com que sejam adicionados os items retornados aos que já lá estão. Ou seja, antes de fazer o DataBind() é necessário apagar todos os items (usando o xpto.Items.Clear()) e só depois então faremos o DataBind().

Nesta altura, a opção “– Seleccione –” foi à vida e temos que adiciona-la novamente à dropdownlist.

Uma forma de evitar isto é adicionar um método (recorrendo aos Extension Methods) para apagar os items e preservar o item que queremos que apareça sempre por defeito.

image

Desta forma, o método ClearItems aparece agora no Intellisence e basta passar o parâmetro preserveDefaultItem a true.

image

Exemplo