2009-12-14 7 views
7

DropDownList jest wypełniana z bazy danych jak w:Dodawanie pustego elementu wyboru na liście rozwijanej listy w dół mój

DataTable dt = getData(); ddlMylist.DataSource = dt; ddlMylist.DataBind();

Teraz dt zawiera dane i chcę dodać słowo "Wybierz" na początek listy, gdy zaznaczenie jest puste. Wydaje się, że nie ma innej możliwości niż dodanie jej do dt (obiektu DataTable) .... ale wydaje się, że jest to błędne.

Jakie są inne opcje. To nie musi być słowo "Wybierz" może to być puste miejsce ... Obecnie, po załadowaniu strony widzę pierwszy element danych na liście, który jest dobry i elegancki, ale mam 3 drop downs które są współzależne i chcę, aby użytkownik wyraźnie dokonał wyboru, który spowoduje, że inne listy rozwijane zostaną odpowiednio wypełnione.

Odpowiedz

11

Spróbuj:

ddlMylist.Items.Insert(0, new ListItem([key], [text])); 
ddlMylist.SelectedIndex = 0; 

Można to zrobić po databind do źródła.

+1

na przykład ... new ListItem (String.Empty, "- Select--") – MikeW

+2

lub po prostu ddlMyList.Items.Insert (0, new ListItem()); –

0

Spróbuj:

DDL.Text = string.Empty; 

Edit:

wiem, że to działa, kiedy jestem ręcznego dodawania elementów, ale nie jestem pewien, czy to będzie kiedy DataSource jest związany.

+0

nie działa. Zauważ, że używam opcji DropDownList, a nie combo box. Po powiązaniu jest to ignorowane i przed powiązaniem pojawia się komunikat, że puste miejsce nie znajduje się na liście danych (co jest prawdą) – sarsnake

+0

Ya nie widziałem tego na początku. Przepraszam, że prowadzę na złą drogę. –

+0

Bez obaw :) Nie sądzę, żeby to była kontrola - prawdopodobnie tak, jak powiedziałeś, ponieważ używam DataBind() – sarsnake

8

Twój DropDownList znaczników powinien wyglądać następująco:

<asp:DropDownList ID="ddlMylist" runat="server" AppendDataBoundItems="true"> 
    <asp:ListItem Text="-Select-" Value="" /> 
</asp:DropDownList> 

Uwaga atrybut AppendDataBoundItems.

+0

Okazuje się, że teraz, za każdym razem, gdy rozwijane jest odbijanie, elementy zostają dołączone, co nie jest tym, co ja chcieć. Chcę tylko dodać "Wybierz" na początek listy, to wszystko. Ta lista jest zależna od innej selekcji, więc jej zawartość powinna się zmienić, a nie dołączać. Wygląda na to, że albo dołącza się CAŁY CZAS, albo NIGDY nie z rozwijaną listą. bardzo frustrujące, gdy takie minutowe zadanie wymaga tak wiele pracy. – sarsnake

+0

Robisz coś złego w stanie oglądania, a następnie przechowujesz te przedmioty w pobliżu. –

+0

nie, zgodnie z blogiem Scotta Guthriego: W szczególności jest to właściwość o nazwie "AppendDataBoundItems", i kontroluje ona, czy elementy w istniejącej liście są zamieniane lub dołączane do, gdy formantem jest databound (w ASP.NET 1.1 elementy były zawsze wymieniane). http://weblogs.asp.net/scottgu/archive/2006/01/29/436804.aspx coś o czym należy pamiętać – sarsnake

2

Spróbuj tego:

ddlMylist.Items.Insert(0, "Select"); 
Powiązane problemy