Asp.net - Tambahkan item kosong di atas dropdownlist

128

Mengapa dropdown tidak menunjukkan item kosong saya terlebih dahulu? Inilah yang saya miliki

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

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

Sunting ~ Saya terikat ke Daftar Generig, mungkinkah ini pelakunya?

Saif Khan
sumber
1
Ini berkaitan dengan: stackoverflow.com/questions/983716/…
mcfea

Jawaban:

275

Setelah databind Anda:

drpList.Items.Insert(0, new ListItem(String.Empty, String.Empty));
drpList.SelectedIndex = 0;
JasonS
sumber
Sebagai alternatif, Anda dapat membuat Instantiate ListItem, atur properti yang Dipilih menjadi true, dan kemudian masukkan ke drpList seperti di atas.
skia.heliou
3
Ini dapat membantu mereka yang mencari jawaban untuk bekerja dengan data sqlDataSource Dalam kasus saya, saya juga harus menambahkan drpList.AppendDataBoundItems = true; untuk mengikatnya ke data saat ini dalam metode Page_Load
sabastienfyrre
30

Anda dapat menggunakannya AppendDataBoundItems=trueuntuk menambahkan:

<asp:DropDownList ID="drpList" AppendDataBoundItems="true" runat="server"><br/>
    <asp:ListItem Text="" Value="" /><br/>
</asp:DropDownList>
ayhtut
sumber
1
VS tidak suka tag <br /> dan berfungsi untuk saya tanpanya. Ini adalah opsi yang bersih, saya tidak tahu mengapa tidak memiliki lebih banyak suara.
Tony L.
Bekerja seperti pesona. Terima kasih atas solusi waktu desainnya.
DataCat Robin
3
Jangan lupa untuk mengatur Selected = "true"
Fandango68
24

Penyatuan data terjadi setelah Anda menambahkan item daftar kosong Anda, dan itu menggantikan apa yang sudah ada, Anda perlu menambahkan item kosong ke awal Daftar dari controller Anda, atau menambahkannya setelah penyatuan data.

EDIT:

Setelah googling ini dengan cepat pada ASP.Net 2.0 ada properti benar "AppendDataBoundItems" yang dapat Anda atur untuk ... menambahkan item databound.

untuk detail lihat

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

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

Mengocok
sumber
4
Satu pemikiran yang perlu Anda perhatikan adalah daftar dropdown Anda tumbuh setelah setiap postback dengan menambahkan data yang sama berulang-ulang.
Keith Sirmons
Apakah item kosong tidak ada, atau ada tetapi tidak dipilih?
Whisk
Ini akan berhasil jika Anda memiliki yang kosong di markup .aspx Anda, kemudian terikat kode di belakang.
John Sheehan
13

Saya pikir cara yang lebih baik adalah memasukkan item kosong terlebih dahulu, kemudian ikat data seperti yang telah Anda lakukan. Namun Anda perlu mengatur AppendDataBoundItemsproperti dari kontrol daftar.

Kami menggunakan metode berikut untuk mengikat sumber data apa pun ke kontrol daftar ...

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

Seperti "Whisk" Said, triknya ada di properti "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;
    }
}

Terima kasih "mengocok"


sumber
5

Lakukan penyatuan data Anda lalu tambahkan yang berikut:

Dim liFirst As New ListItem("", "")
drpList.Items.Insert(0, liFirst)
Dillie-O
sumber
3

sepertinya Anda menambahkan item kosong, dan kemudian penyatuan data, yang akan mengosongkan daftar; coba masukkan item kosong setelah penyatuan data

Steven A. Lowe
sumber
ketika saya melakukan itu, baris kosong muncul di bagian bawah.
Saif Khan
Anda dapat menentukan indeks yang akan dimasukkan. Lihatlah solusi JasonS.
AndyG
@ [Saif Khan]: dan jika itu tidak berhasil, masukkan baris kosong ke sumber data Anda, lalu databind
Steven A. Lowe
3

sederhana

akhirnya

ddlProducer.Items.Insert(0, "");
Umesh
sumber
1

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

Cak 1:

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

ddlCategory.DataBind();

Cak 2:

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

(Diuji OK)

Chưa biết
sumber
0

Anda juga bisa memiliki penyatuan pilihan kosong dengan pilih yang memiliki konten:

select '' value, '' name
union
select value, name from mytable
CINCHAPPS
sumber
Melihat ke belakang, saya tidak akan merekomendasikan metode ini kecuali hanya sebagai alternatif. Saya suka acara ini demi fleksibilitas (OnDataBound = "mydropdown_DataBound"), tetapi dalam kasus saya saat ini, saya mengadopsi (AppendDataBoundItems = "true") untuk kesederhanaan.
CINCHAPPS