2009-12-14 6 views
7

мой DropDownList заполняются из базы данных, как в:Добавление пустого элемента выбора в список в выпадающем списке

DataTable DT = GetData(); ddlMylist.DataSource = dt; ddlMylist.DataBind();

Теперь dt содержит данные, и я хочу добавить слово «Выбрать» в начало списка, когда выбор пуст. Кажется, что нет другого варианта, кроме добавления его в объект dt (объект DataTable) .... но он как-то кажется неправильным.

Другие варианты. Это не должно быть слово «Выбрать», это может быть просто пустое пространство ... В настоящее время, при загрузке страницы, я вижу первый элемент данных в списке, который является хорошим и денди, но у меня есть 3 drop downs которые являются зависимыми друг от друга, и я хочу, чтобы пользователь явно сделал выбор, который будет активировать другие выпадающие списки.

ответ

11

Try:

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

Вы делаете это после того, как вы привязка к источнику.

+1

например ... новый ListItem (String.Empty, "--Select--") – MikeW

+2

или просто ddlMyList.Items.Insert (0, новый ListItem()); –

0

Try:

DDL.Text = string.Empty; 

Edit:

Я знаю, что это работает, когда я вручную добавлять элементы, но я не уверен, если это будет, когда DataSource привязан.

+0

не работает. Обратите внимание, что я использую DropDownList, а не элемент управления со списком. После привязки это игнорируется и перед привязкой, я получаю сообщение об ошибке, что пустое пространство отсутствует в списке данных (это правда) – sarsnake

+0

Я не видел этого вначале. Извините, что привело вас к неправильному пути. –

+0

не беспокоится :) Я не думаю, что это контроль на самом деле - это, вероятно, так, как вы сказали, потому что я использую DataBind() – sarsnake

8

Ваша DropDownList разметка должна выглядеть следующим образом:

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

Примечание атрибут AppendDataBoundItems.

+0

. Оказывается, теперь, каждый раз, когда выпадающий снижается, элементы добавляются, а это не то, что я хотеть. я просто хочу добавить «Выбрать» в начало списка, вот и все. Этот список зависит от другого выбора, поэтому его содержимое должно измениться, а не добавляться. Похоже, что он добавляет ВСЕ ВРЕМЯ или НИКОГДА с выпадающим списком. очень расстраивает, когда такая минутная задача требует такой работы. – sarsnake

+0

Вы делаете что-то еще неправильно с viewstate, чтобы сохранить эти предметы. –

+0

нет, согласно блогу Скотта Гатри: В частности, это свойство называется «AppendDataBoundItems», и оно контролирует, заменяются ли элементы в существующем списке или добавляются, когда элемент управления является привязкой к базе данных (с ASP.NET 1.1 элементы были всегда заменяется). http://weblogs.asp.net/scottgu/archive/2006/01/29/436804.aspx что-то иметь в виду – sarsnake

Смежные вопросы