PDA

View Full Version : مبتدی: چگونه میشود برای یک textbox خصوصیت autocomplete را تنظیم کرد به شکلی که دیتا های قبلی را ا



aftabeshargh
سه شنبه 09 اسفند 1390, 19:44 عصر
سلام
تو تایپیک های قبلی جوابمو پیدا نکردم
چگونه میشود برای یک textbox خصوصیت autocomplete را تنظیم کرد به شکلی که دیتا های قبلی را از sql بخواند.
منظورم این است که چه شکلی کد بنویسم که autocompletecustomsource دیتا رو از یک tabale درون دیتابیس بیاورد.
از کدام event برای textbox هم باید استفاده کنم

AutoCompleteCustomSource چطور باید ست بشه ؟
ممنون

alimanam
سه شنبه 09 اسفند 1390, 20:22 عصر
با سلام

این کار به سادگی انجام میشه کافیه DataTable رو به عنوان منبع در نظر بگیرین واستون کدی نوشتم که این کار رو انجام میده :


Imports System.Data.SqlServerCe
Public Class Form1
Private cnn As New SqlCeConnection("Data Source=|DataDirectory|\db.sdf")
Private tb As DataTable
Private Sub LoadData()
Dim ad As New SqlCeDataAdapter("Select fname from tb1", cnn)
tb = New DataTable
ad.Fill(tb)
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
LoadData()
Me.TextBox1.AutoCompleteCustomSource.AddRange((Fro m row In tb.Rows.Cast(Of DataRow)() _
Select CStr(row("fname"))).ToArray())
End Sub
End Class

موفق باشید./

Hybrid
سه شنبه 09 اسفند 1390, 20:30 عصر
سلام من هم یک Sample واستون نوشتم شاید به دردت خورد.

aftabeshargh
چهارشنبه 10 اسفند 1390, 19:01 عصر
سلام
توی فرمم از روش شما استفاده کردم اما وقتی تو textbox1 چیزی مینویسم ، اتفاق خاصی نمیفته !
ممنون

فرید نجفلو
چهارشنبه 10 اسفند 1390, 19:48 عصر
یه Textbox به فرم اضافه و کد زیر رو کپی کنید

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Dim dt As New DataTable
dt.Columns.Add("FirstName")
dt.Rows.Add("Farid")
dt.Rows.Add("Vahid")
dt.Rows.Add("Navid")
dt.Rows.Add("Davood")
dt.Rows.Add("Amir")
TextBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend
TextBox1.AutoCompleteSource = AutoCompleteSource.CustomSource
TextBox1.AutoCompleteCustomSource.AddRange((From aRow In dt Select CStr(aRow.Item("FirstName"))).ToArray)
End Sub


احتمالا ایراد کار شما خطوط 9و10 باشه

Hybrid
چهارشنبه 10 اسفند 1390, 20:07 عصر
سلام ،

به احتمال 99 درصد شما dt رو پر نکردین ! به این روشی که شما اومدین dt رو پر کنین شک دارم ، حتی الامکان از طریق dataAdapter ، دیتا تیبل رو پر کنین.

به کدی که داخل سورسی که واستون گذاشتم خوب توجه کنین تا مشکل حل شه.

موفق باشید./

aftabeshargh
چهارشنبه 10 اسفند 1390, 20:14 عصر
ممنون از راهنماییتون
دوست عزیز ، من اطلاعات رو از دیتابیس میگیرم ، و جدول رو با کد نمیسازم
یه نگاهی به این عکس بندازید ، جدول فرضی dt رو توی دستوری که شما نوشتید قبول نمیکنه !

Hybrid
چهارشنبه 10 اسفند 1390, 20:50 عصر
دوست عزیز ، باید هم اشکال بگیره چون linq در دات نت فریمورک 3.5 به بالا اضافه شده احتمالا .net framework شما 3 یا کمتره. دات نت فریمورک رو ارتقا بدین تا مشکل حل شه.

موفق باشید./

فرید نجفلو
چهارشنبه 10 اسفند 1390, 20:52 عصر
شما رفرنس هات رو بررسی کن حداقل باید رفرنس های پایین رو داشته باشی

system.xml.Linq
system.data
system.data.DataAetExtensions
در ضمن دانت پروژه هم باید 3.5 به بالا باشه

aftabeshargh
چهارشنبه 10 اسفند 1390, 20:56 عصر
برنامه ای که قبلا با .net framework 3 یا کمتر شروع کردیم و فرم هاشو ساختیم ، وسط کار چطور و از کدوم قسمت میشه .net framework رو ارتقا داد؟

Hybrid
چهارشنبه 10 اسفند 1390, 21:19 عصر
1 ) روی My project داخل Solution Explorer کلیک کنین.

2 ) در قسمت Compile روی دکمه یAdvanced Compile Option... کلیک کنین.

3 ) در پنجره باز شده Target framework رو به 3.5 یا بالاتر تغییر بدین.

فرید نجفلو
چهارشنبه 10 اسفند 1390, 21:36 عصر
از solution explorer رو پروژه راست کلیک و Properties رو انتخاب کنید
زبانه Compile رو باز و از پایین پنجره دکمه Advanced Compile option کلیکک بعد از کرکره Target Framwork نسخه فریم ورک رو عوض و ok کنید

aftabeshargh
چهارشنبه 10 اسفند 1390, 21:38 عصر
با ارتقا دات نت فریمورک مشکل بالا حل شد ، طبق عکس و راهنمایی خودتون دستورات رو توی لود میزارم ، اما با تایپ تو textox1 هیچ اتفاقی نمیفته !!! مگه با autocomplete نباید با زدن " م " کلاماتی که با "م" شروع میشن ظاهر بشن از دیتابیس؟ من دنبال چنین چیزی هستم . شایدم اصلا autocomplete رو من درک نکردم ! نباید textchange دستوری گذاشت ؟

Hybrid
چهارشنبه 10 اسفند 1390, 22:01 عصر
عزیز من میگم شما به احتمال زیاد Dt رو پر نمیکنین ... اون SelectQuery متدش رو بنویس ببینم درست نوشتیش.

aftabeshargh
چهارشنبه 10 اسفند 1390, 22:08 عصر
دوست عزیز متد درسته و باهاش در همه جای برنامه گزارش از دیتابیس میگیرم

aftabeshargh
چهارشنبه 10 اسفند 1390, 22:23 عصر
دوستان نظری ندارن؟

aftabeshargh
پنج شنبه 11 اسفند 1390, 00:20 صبح
مثل اینکه باید بیخیالش بشیم تو سایت:گریه:

alimanam
پنج شنبه 11 اسفند 1390, 00:33 صبح
با سلام

دوست عزیز ظاهرا شما دوست داری لقمه رو دور سر گردن گوش حلق بینی خودت بچرخونی !

موفق باشید./

aftabeshargh
پنج شنبه 11 اسفند 1390, 00:52 صبح
سلام

TextBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend
TextBox1.AutoCompleteSource = AutoCompleteSource.CustomSource
Dim dtt As New DataTable

dtt = SelectQuery("select * from tbl_s ")

TextBox1.AutoCompleteCustomSource.AddRange((From row In dtt.Rows.Cast(Of DataRow)() _
Select CStr(row("family"))).ToArray())
با تایپ تو text box اتفاقی نمیفته !!!!!!!

Hybrid
پنج شنبه 11 اسفند 1390, 10:31 صبح
دوست عزیز ، شما این کد هارو داخل کدوم رویداد مینویسی ؟؟؟ Sample هایی که دوستان نوشتن هیچ اشکالی ندارن .

aftabeshargh
پنج شنبه 11 اسفند 1390, 14:30 عصر
توی کدام رویداد باید نوشته شن؟ دوستان تو sample ها دستورات رو فقط تو load قرار میدن دیگه ، پس چرا نمیشه ؟

Hybrid
پنج شنبه 11 اسفند 1390, 15:08 عصر
عزیز دیگه والا نمیدونیم چی بگیم ، همه ی راه حل ها رو واستون گفتیم دیگه چیزی نمونده به کدتون یک بار دیگه خوب دقت کنین شاید جایی اشتباهی کردین.

aftabeshargh
پنج شنبه 11 اسفند 1390, 15:24 عصر
نمیدونم والا !!!!!!!! عکس رو ببینید ، عینا مثل sample هایی کا ددوستان زحمت کشیدن برام گذاشتن
ممنون از راهنماییتون

aftabeshargh
پنج شنبه 11 اسفند 1390, 15:30 عصر
توقع من از این دستورات اینه که وقتی تو textbox1 حرف "م" رو نوشتم نام هایی که با م شروع میشن ظاهر بشن " چنین چیزی رو این کد ها انجام میدن ؟ والا اتفاقی نمیفته !!

aftabeshargh
پنج شنبه 11 اسفند 1390, 15:34 عصر
از ComboBox1 جای textbox استفاده کردم جواب داد " textbox نشد.
ممنونم

فرید نجفلو
پنج شنبه 11 اسفند 1390, 15:47 عصر
من متوجه نشدم که فقط کدهای شما کار نمی کنه یا کدهایی که ما نوشتیم هم کار نمی کنه!
اگه کد های ما هم کار نمی کنه ایراد از برنامه نیست و باید مشکل از جایه دیگه ای باشه
در غیر این صورت شما فعلا اطلاعات dataset رو چک کن. به این صورت که:
یک دیتا گرید به فرم اضافه کن
و بعد از خط
dtt=SelectQuery
این خطوط رو اضافه کن:

Me.DataGridView1.AutoGenerateColumns = True
Me.DataGridView1.DataSource = dtt

ببین چی تو دیتا گرید نشون می ده بعد در مورد بقیه چیزا بحث می کنیم
(یه تصویر از نتیجه بذاری بد نیست)

merlin425
شنبه 19 فروردین 1391, 01:14 صبح
دوستان ببخشیدا البته من c# کار میکنم vb.net کار نیستم ولی من هم یه مدت با autocomplete مشکل داشتم نمیدونستم و خاصیت multiline مربوط به textbox رو true می کردم و برنامه کار نمی کرد شاید مشکل شما هم همین باشه یه امتحان بکن