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 عصر
دوستان نظری ندارن؟

merlin425
شنبه 19 فروردین 1391, 01:20 صبح
چرا عزیزم من دارم ببین شاید برای textbox خاصیت multiline رو true گذاشتی اگه این جوری باشه کار نمی کنه تست کن