December 16, 2008

Membuat Textbox menjadi auto complete


Biasanya ketika kita mengetikkan alamat URL pada address bar, maka pada address bar akan terlihat alamat-alamat URL yang mendekati dengan apa yang kita ketik. Lalu bagaimana jika auto complete tersebut di buat pada program kita . Artikel ini menggunakan Vb 2005 express.
Textbox dan Combobox adalah control yang mensupport untuk feature ini di .Net 2.0. Untuk menggunakan AutoComplete pertama adalah dengan mensetting property AutoCompleteMode, masing-masing adalah
Append
Mode ini memasukkan text secara otomatis kedalam control sebagaimana yang kita ketik.
Suggets
Text yang mirip dengan apa yang kita ketik akan muncul di bawah control (berbentuk seperti dropdownlist), jika ada yang cocok diantara text yang tampil, you can select it (tinggal pilih aja J)
SuggestAppend
Ini merupakan kombinasi dari 2 mode diatas (Append dan Suggest). List dari text yang mirip akan tampil dibawah control, namun yang paling cocok berada dalam control.

Setelah mengganti AutoComplete Mode pada properties, selanjutnya kita akan mengubah property AutoCompleteSource. Terdapat 7 value pada properties ini.
FileSystem
Menggunakan FileSystemDirectories (Hanya menampilkan direktori path)
HistoryList
Menampilkan URL dari Internet Explore history list
RecentlyUsedList
semua file yang terakhir di gunakan yang muncul pada start menu.
AllUrl
Seluruh URL pada internet explore, apakah diketik manual oleh user atau link dari web page
AllSystemSources
Full List dari URL dan file path
ListItems
Item yang terdapat pada Combobox.item. pilihan ini tidak tersedia untuk control textbox
CustomSource
Untuk mode ini kita harus menambahkan sendiri text pada properties AutoCompleteCustomSource.

Semoga bermanfaat..
Wassalam

9 comments:

Wely said...

Simple but usefull :)

Pendy NotPending said...

halo pak
mau tanya nih

sy udah atur textbox1 dgn property
autoCompleteMode:suggestAppend
autoCompleteSource:CustomSource
autoCompleteCustom:
makan
makanan
minum


pas running
sy input kata ma
kok gak muncul kata makan secara otomatis ya?(seperti gambar)

lantes klo autoComplete misalnya mau ambil source data dari database Access 2007, gmn caranya?

tas balasannya, thx alot Pak

Junindar said...

pada AutoCompleteCustomSource sudah kamu isikan kata-kata makan,makanan,minum...???
kalau dari database buat dulu coding untuk menampilkan data dari DB..baru ketik seperti ini..
TextBox1.AutoCompleteCustomSource.Add(DatadariTable).
Seperti menampilkan data pada list box, atau combobox..

Anonymous said...

Salam Pak Junindar..

Saya mengerjakan proyek dengan item barang 10.000 lebih. Untuk membuat autoCompleteCustomSource dengan looping jelas tidak mungkin. Adakah saran dari Bapak untuk membuatnya tanpa looping? dengan binding atau datasource.

Terima kasih sebelumnya

Junindar said...

Dim autoSourceCollection As New AutoCompleteStringCollection()
Dim drow As DataRow

For Each drow In dt.Rows
autoSourceCollection.Add(drow.Item(ColName))
Next


MyControl.AutoCompleteMode = AutoCompleteMode.SuggestAppend
MyControl.AutoCompleteSource = AutoCompleteSource.CustomSource
MyControl.AutoCompleteCustomSource = autoSourceCollection

coba sintaks ini,apakah brat sekali atau tidak...kayaknya binding dari table belum nemu...

Anonymous said...

Bertemu kembali Pak.

Yup berat Pak dengan loop biasa.

Ada yg better dgn IDataReader

Dim idr As IDataReader = DataTable.CreateDataReader
While idr.Read
If Not IsDBNull(idr.Item(0)) Then acsc.Add(idr.Item(columnIndex))
End While

namun tetap bukan best solution.

Sepertinya mereka tidak menyediakan fasilitas binding.

Subur Banjar Nahor said...

Hallo pak...
aq mau nanya neh...
cara menampilkan data dari txtbox1 dan textbox2 dan akan tampil di textbox3...
logikanya : 1-1-1=111
gimana caranya pak...
mohon bantuannya ya pak slnya saya masih org awam...

Junindar, MVP VB said...

maksud nya seperti ini ya mas?? textbox3.text=textbox1.text & textbox2.text

Anonymous said...

Bapa, saya mau bertanya bagaimana kodingan untuk menampilkan autocomplete pada combox yang datanya di ambil dari tabel. Terimakasih banyak pak.