de-vraag
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
 MrG
MrG
Question

C# - Mengisi kotak kombo dengan DataTable

Saya terbiasa bekerja dengan Java di mana banyak contoh tersedia. Untuk berbagai alasan saya harus beralih ke C# dan mencoba melakukan hal berikut di SharpDevelop:

// Form has a menu containing a combobox added via SharpDevelop's GUI

// --- Variables
languages = new string[2];
languages[0] = "English";
languages[1] = "German";
DataSet myDataSet = new DataSet();

// --- Preparation
DataTable lTable = new DataTable("Lang");
DataColumn lName = new DataColumn("Language", typeof(string));
lTable.Columns.Add( lName );
for( int i=0; i<languages.Length; i++ ) {
    DataRow lLang = lTable.NewRow();
    lLang["Language"] = languages[i];
    lTable.Rows.Add(lLang);
}
myDataSet.Tables.Add(lTable);

// --- Handling the combobox
mnuActionLanguage.ComboBox.DataSource = myDataSet.Tables["Lang"].DefaultView;
mnuActionLanguage.ComboBox.DisplayMember = "Language";

Seseorang akan berasumsi untuk melihat beberapa nilai dalam dropdown, tetapi kosong. Tolong beritahu saya apa yang saya lakukan salah;(

EDIT: mnuActionLanguage.ComboBox.DataBind() adalah apa yang juga saya temukan di internet, tetapi tidak bekerja dalam kasus saya.

SOLUSI

mnuActionLanguage.ComboBox.BindingContext = this.BindingContext;

pada akhirnya memecahkan masalah!

21 2008-11-02T12:17:51+00:00 3
 BlackWasp
BlackWasp
Pertanyaan edit 14 Maret 2009 в 4:53
Pemrograman
datatable
.net
c#
combobox
sharpdevelop
Pertanyaan ini memiliki :value jawaban dalam bahasa Inggris, untuk membacanya masuk ke akun Anda.
 Ady
Ady
2 November 2008 в 12:49
2008-11-02T12:49:20+00:00
Lebih
Sumber
Sunting
#8607167

Apakah Anda menerapkan RowFilter ke DefaultView Anda nanti dalam kode? Ini bisa mengubah hasil yang dikembalikan.

Saya juga akan menghindari penggunaan string sebagai anggota tampilan jika Anda memiliki referensi langsung kolom data, saya akan menggunakan properti objek:

mnuActionLanguage.ComboBox.DataSource = lTable.DefaultView;
mnuActionLanguage.ComboBox.DisplayMember = lName.ColumnName;

Saya telah mencoba ini dengan form kosong dan combo standar, dan tampaknya bekerja untuk saya.

2
0
Timothy Khouri
Timothy Khouri
2 November 2008 в 12:35
2008-11-02T12:35:56+00:00
Lebih
Sumber
Sunting
#8607166

Beberapa poin:

  1. "DataBind()" hanya untuk aplikasi web (bukan aplikasi windows).

  2. Kode Anda terlihat sangat ' JAVAish ' (bukan hal yang buruk, hanya sebuah pengamatan).

Coba ini:

mnuActionLanguage.ComboBox.DataSource = languages;

Jika itu tidak berhasil... maka saya berasumsi bahwa sumber data Anda sedang diinjak di tempat lain dalam kode.

1
0
 Alan
Alan
2 November 2008 в 12:23
2008-11-02T12:23:28+00:00
Lebih
Sumber
Sunting
#8607165

Garis ini

mnuActionLanguage.ComboBox.DisplayMember = "Lang.Language";

adalah salah. Ubahlah menjadi

mnuActionLanguage.ComboBox.DisplayMember = "Language";

dan itu akan bekerja (bahkan tanpa DataBind()).

0
0
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
UbiBot UK
Terdaftar 15 jam yang lalu
2
Галина Утяшова
Terdaftar 1 hari yang lalu
3
Asilbek Qadamboyev
Terdaftar 4 hari yang lalu
4
Akshit Mehta
Terdaftar 1 minggu yang lalu
5
me you
Terdaftar 1 minggu yang lalu
ID
JA
KO
RU
© de-vraag 2022
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi