Saya mungkin tidak akan mengikat data karena ini adalah enum, dan itu tidak akan berubah setelah waktu kompilasi (kecuali saya mengalami salah satu momen yang membosankan itu ).
Lebih baik hanya mengulang melalui enum:
Dim itemValues As Array = System.Enum.GetValues(GetType(Response))
Dim itemNames As Array = System.Enum.GetNames(GetType(Response))
For i As Integer = 0 To itemNames.Length - 1
Dim item As New ListItem(itemNames(i), itemValues(i))
dropdownlist.Items.Add(item)
Next
Atau sama di C #
Array itemValues = System.Enum.GetValues(typeof(Response));
Array itemNames = System.Enum.GetNames(typeof(Response));
for (int i = 0; i <= itemNames.Length - 1 ; i++) {
ListItem item = new ListItem(itemNames[i], itemValues[i]);
dropdownlist.Items.Add(item);
}
Gunakan kelas utilitas berikut
Enumeration
untuk mendapatkanIDictionary<int,string>
(Pasangan nilai & nama) dari Enumerasi ; Anda kemudian mengikat IDictionary ke Kontrol yang dapat diikat.Contoh: Menggunakan kelas utilitas untuk mengikat data pencacahan ke kontrol
sumber
Saya menggunakan ini untuk ASP.NET MVC :
sumber
Versi saya hanyalah bentuk terkompresi di atas:
sumber
Setiap jenis Enum berasal dari System.Enum. Ada dua metode statis yang membantu mengikat data ke kontrol daftar drop-down (dan mengambil nilainya). Ini adalah Enum.GetNames dan Enum.Parse. Menggunakan GetNames, Anda dapat mengikat kontrol daftar drop-down Anda sebagai berikut:
Sekarang jika Anda menginginkan nilai Enum Back on Selection ....
sumber
Setelah membaca semua posting saya menemukan solusi komprehensif untuk mendukung menampilkan deskripsi enum dalam daftar dropdown serta memilih nilai yang tepat dari Model di dropdown saat menampilkan dalam mode Edit:
enum:
kelas ekstensi enum:
Kelas model:
dan Lihat:
dan jika Anda menggunakan tarik-turun itu tanpa terikat ke Model, Anda dapat menggunakan ini sebagai gantinya:
Jadi dengan melakukan itu Anda dapat mengharapkan dropdown Anda menampilkan Description, bukan nilai enum. Juga ketika datang ke Edit, model Anda akan diperbarui dengan nilai dropdown yang dipilih setelah halaman posting.
sumber
Seperti yang telah dikatakan orang lain - jangan mengikat data ke enum, kecuali Anda perlu mengikat ke enum yang berbeda tergantung pada situasinya. Ada beberapa cara untuk melakukannya, beberapa contoh di bawah.
ObjectDataSource
Cara deklaratif untuk melakukannya dengan ObjectDataSource. Pertama, buat kelas BusinessObject yang akan mengembalikan Daftar untuk mengikat DropDownList ke:
Kemudian tambahkan beberapa markup HTML ke halaman ASPX untuk mengarah ke kelas BO ini:
Opsi ini tidak memerlukan kode di belakang.
Kode Dibalik DataBind
Untuk meminimalkan HTML di halaman ASPX dan mengikat di belakang kode:
Bagaimanapun, triknya adalah membiarkan metode tipe Enum dari GetValues, GetNames, dll. Bekerja untuk Anda.
sumber
Saya tidak yakin bagaimana melakukannya di ASP.NET tapi lihat posting ini ... mungkin bisa membantu?
sumber
Anda bisa menggunakan linq:
sumber
sumber
sumber
Kode Generik Menggunakan Jawaban enam.
sumber
Setelah menemukan jawaban ini, saya menemukan cara yang menurut saya lebih baik (setidaknya lebih elegan) untuk melakukan ini, saya pikir saya akan kembali dan membagikannya di sini.
Page_Load:
LoadValues:
SaveValues:
sumber
Ini mungkin pertanyaan lama .. tapi begitulah cara saya melakukannya.
Model:
Kemudian di View: inilah cara menggunakan populate dropdown.
Ini harus mengisi semua yang ada di daftar enum Anda. Semoga ini membantu..
sumber
[Display(Name = "Option number one")] Option1,
Bukan itu yang Anda cari, tetapi mungkin membantu:
http://blog.jeffhandley.com/archive/2008/01/27/enum-list-dropdown-control.aspx
sumber
Mengapa tidak menggunakan seperti ini agar dapat meneruskan setiap listControle:
Dan penggunaannya sesederhana:sumber
ASP.NET sejak itu telah diperbarui dengan beberapa fungsionalitas lagi, dan Anda sekarang dapat menggunakan enum bawaan untuk dropdown.
Jika Anda ingin mengikat Enum itu sendiri, gunakan ini:
Jika Anda mengikat sebuah instance dari Respon, gunakan ini:
sumber
Ini adalah solusi saya untuk Memesan Enum dan DataBind (Teks dan Nilai) ke Dropdown menggunakan LINQ
sumber
Lihat posting saya tentang membuat pembantu khusus "ASP.NET MVC - Membuat pembantu DropDownList untuk enum": http://blogs.msdn.com/b/stuartleeks/archive/2010/05/21/asp-net-mvc -creating-a-dropdownlist-helper-for-enums.aspx
sumber
Jika Anda ingin memiliki deskripsi yang lebih ramah pengguna di kotak kombo Anda (atau kontrol lain), Anda dapat menggunakan atribut Description dengan fungsi berikut:
Berikut adalah contoh enum dengan atribut Description diterapkan:
Kemudian Bind untuk mengontrol seperti ini ...
Dengan cara ini Anda dapat meletakkan teks apa pun yang Anda inginkan di drop-down tanpa harus terlihat seperti nama variabel
sumber
Anda juga bisa menggunakan metode Ekstensi. Bagi mereka yang tidak terbiasa dengan ekstensi, saya sarankan untuk memeriksa dokumentasi VB dan C # .
Ekstensi VB:
Untuk menggunakan ekstensi:
C # Ekstensi:
Untuk menggunakan ekstensi:
Jika Anda ingin mengatur item yang dipilih sekaligus mengganti
dengan
Dengan mengkonversi ke System.Enum daripada ukuran int dan masalah keluaran dihindari. Misalnya 0xFFFF0000 akan menjadi 4294901760 sebagai uint tetapi akan menjadi -65536 sebagai int.
TryCast dan System.Enum sedikit lebih cepat daripada Convert.ChangeType (enumTypeValues [i], enumUnderType) .ToString () (12:13 dalam tes kecepatan saya).
sumber
Baik asp.net dan tutorial winforms dengan combobox dan dropdownlist: Cara menggunakan Enum dengan Combobox di C # WinForms dan Asp.Net
harapan membantu
sumber
Solusi yang diterima tidak berfungsi, tetapi kode di bawah ini akan membantu orang lain mencari solusi terpendek.
sumber
Anda bisa melakukan ini jauh lebih singkat
sumber