PDA

View Full Version : سوال: مشکل نمایش رکورد در تکست باکس



birtemp
پنج شنبه 09 دی 1389, 15:24 عصر
سلام دوستان و استادان عزیز برنامه نویس.

من یه دیکشنری درست کردم با vb.net 2010 ، بانکش هم اکسس هست که اون رو هم به برنامه اتصال دادم.
یک جستجوگر هم گذاشتم ، وقتی که کاربر کلمه ای رو تایپ میکنه ، لغاتی رو که اولشون شبیه کلمه تایپ شده است رو تو لیست باکس به نمایش بذاره.(با دستور like)
بعد از لیست باکس، یک تکست باکس دیگه گذاشتم ، که وقتی کاربر روی لغات داخل لیست باکس کلیک میکنه معنیش تو تکست باکس نشون داده بشه. که این قسمتش کار نمیکنه.(همین نشون دادن معانی تو کادر متن)

اینم بگم دوستان ، این لغات انگلیسی و فارسی تو یدونه جدول و دو تا فیلد جداگانه قرار دارن.
همین.:چشمک:

ali_najari
پنج شنبه 09 دی 1389, 15:30 عصر
دوست عزيز من چيزي متوجه نشدم اگر شما ميتونيد سورس برنامه رو بزاريد با اينكه با عكس توضيح بديد كه چي نياز داريد

birtemp
پنج شنبه 09 دی 1389, 15:57 عصر
آقا علی من اول این کدها رو قرار دادم



Imports System.Data
Imports System.Data.OleDb



بعدش این کدها رو برا اتصال با بانک گذاشتم


Dim cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=takdic.mdb")
Dim cm As New OleDbCommand("select * from dictionary Order By fa", cn)
Dim da As New OleDbDataAdapter(cm)
Dim ds As New DataSet


این کدهای پایین رو هم تو لود فرم گذاشتم


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
cn.Open()
da.Fill(ds, "dictionary")
cn.Close()
ListBox1.DataSource = ds
ListBox1.DisplayMember = "dictionary.fa"
End Sub

این کد زیر رو هم گذاشتم واسه جستجو


Private Sub inputsearch_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles inputsearch.TextChanged
cm.CommandText = "select * form dictionary where fa like '%" + inputsearch.Text + "%';"
ds = New DataSet
cn.Open()
da.Fill(ds, "dictionary")
cn.Close()

ListBox1.DataSource = ds
ListBox1.DisplayMember = "dictionary.fa"
End Sub
سورس برنامه همینه.
حالا میرم سراغ توضیح.
من رکوردها رو داخل یک کنترل لیست باکس نمایش میدم.
الان میخوام وقتی که ، رکوردی از داخل کنترل لیست باکس انتخاب میشه ، شماره id اون رکورد ، داخل یک کنترل textbox نشون داده بشه.

همین. از این ساده تر دیگه نتونستم بگم. :لبخند:

ali_najari
پنج شنبه 09 دی 1389, 16:05 عصر
دوست عزيز ليست باكس و كامبوباكس يه خاصيتي علاوه بر Displaymember دارند به نام valuemember كه شما ميتونيد يك فيلد ديگري رو هم به اونها اختصاص بديد و با تغيير ركوردت (انتخاب يك ركورد) مقدار دوم رو نيز كه به عنوان مثال ID اون ركورد رو بهتون نمايش ميده يعني به اين صورت:


ListBox1.DataSource = Ds.Tables("dictionary")
ListBox1.DisplayMember = "fa"
ListBox1.ValueMember = "ID"

براي مشاهده مقدار ID ميتونيد از كد زير استفاده كنيد:


Private Sub ListBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
TextBox1.Text = ListBox1.SelectedIndex.ToString
End Sub

ali_najari
پنج شنبه 09 دی 1389, 16:06 عصر
البته ميشه از كد خودتون هم استفاده كرد:



ListBox1.DataSource = Ds
ListBox1.DisplayMember = "dictionary.fa"
ListBox1.ValueMember = "dictionary.ID"



Private Sub ListBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
TextBox1.Text = ListBox1.SelectedIndex.ToString
End Sub

birtemp
پنج شنبه 09 دی 1389, 16:25 عصر
ببخشید علی آقا منظور من از آیدی رکورد ، این آیدی خود لیست باکس نیست.
منظورم اون شماره یا آیدی هست که تو بانک اطلاعاتی اکسس ، به صورت اتوماتیک به رکورد داده میشه.

birtemp
جمعه 10 دی 1389, 17:09 عصر
کسی از دوستان نمیخواد کمکمون کنه ؟؟؟
:چشمک:

ali_najari
جمعه 10 دی 1389, 18:58 عصر
ببخشید من اشتباه نوشتم:

شما باید این کد رو بنویسید:


Listbox1.SelectedValue.ToString

بصورت کلی به این شکل:


Private Sub ListBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
TextBox1.Text = Listbox1.SelectedValue.ToString
End Sub