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

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

Почему выпадающий список не показывает мой пустой элемент? Вот что я

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

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

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

4b9b3361

Ответ 1

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

drpList.Items.Insert(0, new ListItem(String.Empty, String.Empty));
drpList.SelectedIndex = 0;

Ответ 2

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

EDIT:

После того, как в 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

Ответ 3

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

<asp:DropDownList ID="drpList" AppendDataBoundItems="true" runat="server"><br/>
    <asp:ListItem Text="" Value="" /><br/>
</asp:DropDownList>

Ответ 4

Я думаю, что лучший способ - сначала вставить пустой элемент, а затем привязать данные так же, как вы делали. Однако вам нужно установить свойство 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();
}

Ответ 5

Как "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;
    }
}

Спасибо "Whisk"

Ответ 6

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

Dim liFirst As New ListItem("", "")
drpList.Items.Insert(0, liFirst)

Ответ 7

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

Ответ 8

простой

наконец

ddlProducer.Items.Insert(0, "");

Ответ 9

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"));

(проверено ОК)

Ответ 10

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

select '' value, '' name
union
select value, name from mytable