Asp.net - добавить пустой элемент в верхней части выпадающего списка - PullRequest
124 голосов
/ 06 ноября 2008

Почему в раскрывающемся списке не отображается мой пустой элемент? Вот что у меня есть

drpList.Items.Add(New ListItem("", ""))

With drpList
    .DataSource = myController.GetList(userid)
    .DataTextField = "Name"
    .DataValueField = "ID"
    .DataBind()
End With

Редактировать ~ Я привязан к списку родов, может ли это быть виновником?

Ответы [ 10 ]

264 голосов
/ 06 ноября 2008

После вашей привязки данных:

drpList.Items.Insert(0, new ListItem(String.Empty, String.Empty));
drpList.SelectedIndex = 0;
28 голосов
/ 28 ноября 2012

Вы можете использовать AppendDataBoundItems=true, чтобы легко добавить:

<asp:DropDownList ID="drpList" AppendDataBoundItems="true" runat="server"><br/>
    <asp:ListItem Text="" Value="" /><br/>
</asp:DropDownList>
24 голосов
/ 06 ноября 2008

Привязка данных происходит после того, как вы добавили пустой элемент списка, и он заменяет то, что уже есть, вам нужно добавить пустой элемент в начало списка с вашего контроллера или добавить его после привязки данных.

EDIT:

После быстрого поиска в Google ASP.Net 2.0 есть истинное свойство "AppendDataBoundItems", которое можно установить на ... добавление элементов, связанных с данными.

подробнее см.

http://imar.spaanjaars.com/QuickDocId.aspx?quickdoc=281 или

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listcontrol.appenddatabounditems.aspx

13 голосов
/ 18 марта 2009

Я думаю, что лучший способ - сначала вставить пустой элемент, а затем связать данные, как вы это делали Однако вам нужно установить свойство AppendDataBoundItems элемента управления списком.

Мы используем следующий метод для привязки любого источника данных к любому элементу управления списком ...

public static void BindList(ListControl list, IEnumerable datasource, string valueName, string textName)
{
    list.Items.Clear();
    list.Items.Add("", "");
    list.AppendDataBoundItems = true;
    list.DataValueField = valueName;
    list.DataTextField = textName;
    list.DataSource = datasource;
    list.DataBind();
}
6 голосов
/ 31 октября 2010

Как и в случае с "Whisk", хитрость в свойстве "AppendDataBoundItems"

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        DropDownList1.AppendDataBoundItems = true;
        DropDownList1.Items.Insert(0, new ListItem(String.Empty, String.Empty));
        DropDownList1.SelectedIndex = 0;
    }
}

Спасибо "Венчик"

5 голосов
/ 06 ноября 2008

Выполните привязку данных и добавьте следующее:

Dim liFirst As New ListItem("", "")
drpList.Items.Insert(0, liFirst)
3 голосов
/ 08 мая 2012

просто

наконец

ddlProducer.Items.Insert(0, "");
3 голосов
/ 06 ноября 2008

похоже, что вы добавляете пустой элемент, а затем привязываете данные, что приведет к очистке списка; попробуйте вставить пустой элемент после привязки данных

1 голос
/ 24 апреля 2013

ddlCategory.DataSource = ds;
ddlCategory.DataTextField = "CatName";
ddlCategory.DataValueField = "CatID";

Cách 1:

ddlCategory.Items.Add(new ListItem("--please select--", "-1"));
ddlCategory.AppendDataBoundItems = true;
ddlCategory.SelectedIndex = -1;

ddlCategory.DataBind();

Cách 2:

ddlCategory.Items.Insert(0, new ListItem("-- please select --", "0"));

(проверено в порядке)

0 голосов
/ 03 марта 2015

У вас также может быть объединение пустого выбора с выбором, содержащим содержимое:

select '' value, '' name
union
select value, name from mytable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...