Asp.net - Açılır listenin en üstüne boş öğe ekle


128

Açılır menü neden ilk olarak boş öğemi göstermiyor? İşte sahip olduğum şey

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

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

Edit ~ Bir Generig Listesine bağlıyım, suçlu bu olabilir mi?


1
Bu,
— şununla

Yanıtlar:


275

Veri bağlantınızdan sonra:

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

Alternatif olarak, bir ListItem başlatabilir, Selected özelliğini true olarak ayarlayabilir ve ardından yukarıdaki gibi drpList'e ekleyebilirsiniz.
— skia.heliou

3
Bu, sqlDataSource verileriyle çalışmak için bir yanıt arayanlara yardımcı olabilir Benim durumumda, drpList.AppendDataBoundItems = true; Page_Load yöntemindeki mevcut verilere bağlamak için
— sabastienfyrre

30

Şunları AppendDataBoundItems=truekolayca eklemek için kullanabilirsiniz :

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

1
VS, <br /> etiketini beğenmiyor ve benim için onsuz çalışıyor. Bu çok temiz bir seçenek, neden daha fazla oy almadığını bilmiyorum.
— Tony L.

Büyüleyici gibi çalıştı. Tasarım zamanı çözümü için teşekkürler.
— DataCat Robin

3
Selected = "true" olarak ayarlamayı unutmayın
— Fandango68

24

Veri bağlama, boş liste öğenizi ekledikten sonra gerçekleşir ve zaten var olanın yerini alır, boş öğeyi denetleyicinizden Listenin başına eklemeniz veya veri bağladıktan sonra eklemeniz gerekir.

DÜZENLE:

ASP.Net 2.0'dan itibaren bu kadar hızlı bir şekilde googledikten sonra, veri bağlantılı öğeleri eklemek için ayarlayabileceğiniz bir "AppendDataBoundItems" gerçek özelliği vardır.

detaylar için bakınız

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

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


4
Dikkat etmeniz gereken bir şey, her geri göndermeden sonra aynı verileri tekrar tekrar ekleyerek açılır listenizin büyümesini sağlamaktır.
— Keith Sirmons

Boş öğe orada değil mi yoksa orada ama seçilmemiş mi?
— Çırpma

Bu, .aspx işaretlemenizde boş olanı ve ardından arkadaki koda bağlı olsaydınız işe yarar.
— John Sheehan

13

Bence daha iyi bir yol, önce boş öğeyi eklemek, ardından verileri yaptığınız gibi bağlamaktır. Bununla birlikte AppendDataBoundItems, liste kontrolünün özelliğini ayarlamanız gerekir .

Herhangi bir veri kaynağını herhangi bir liste kontrolüne bağlamak için aşağıdaki yöntemi kullanıyoruz ...

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();
}

7

"Çırpma" Said gibi, numara "AppendDataBoundItems" özelliğindedir

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;
    }
}

Teşekkürler "Çırpma"


5

Veri bağlamanızı yapın ve ardından aşağıdakileri ekleyin:

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

3

boş bir öğe ekliyormuşsunuz gibi görünür ve ardından veri bağlama, bu da listeyi boşaltır; veri bağlamadan sonra boş öğeyi eklemeyi deneyin


bunu yaptığımda altta boş satır beliriyor.
— Saif Khan

Eklenecek dizini belirtebilirsiniz. JasonS'ın çözümüne bakın.
— AndyG

@ [Saif Khan]: ve bu işe yaramazsa, boş satırı veri kaynağınıza ekleyin, ardından veritabanını bağlayın
— Steven A. Lowe

3

basit

sonunda

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

1

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

(Tamam test edildi)


0

Ayrıca, içeriğe sahip seçim ile boş seçim birleşimine sahip olabilirsiniz:

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

Geriye dönüp baktığımda, bu yöntemi yalnızca bir alternatif olarak önermem. Esneklik uğruna olayı seviyorum (OnDataBound = "mydropdown_DataBound"), ancak şu anki durumumda basitlik uğruna (AppendDataBoundItems = "true") kullanıyorum.
— CINCHAPPS
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.