نمایش نتایج 1 تا 31 از 31

نام تاپیک: جستجوی هوشمند در TextBox (همانند جستجو گوگل)

  1. #1

    جستجوی هوشمند در TextBox (همانند جستجو گوگل)

    سلام
    یه لیست از یه سری داده داریم که مثلا تو یه لیست باکس ، کمبو باکس یا هرچیز دیگه ای که بهتر باشه داخل برنامه قرار میدیم
    (بانک اطلاعاتی مثل SQL , ....نمیخوایم استفاده کنیم)
    الان میخوایم در یک تکست باک مثلا کاربر اگر حرف A را زد مثلا 5 تا داده اولی که با حرف A شروع شدن را پیدا کنه و یه منو زیر تکست باکس باز بشه و به کاربر نمایش داده بشه و اگر کاربر رفت روش و انتخابش کرد وارد تکست باکس بشود ! (دقیقا نمونش میشه مثل تکست باکس جستجوی گوگل)
    حالا نکته اینجاست که اگر مثلا کلمه وارد کرد در اون لیستی که داریم جستجو انجام یشه و اگر کلمه هر جایی از متن بود اون متن را نشون میده

    مثال
    مثلا کلمه ی "گل" در تکست باکس وارد شده و قراره به طور مثال 5 داده اولی که داخلشون گل پیدا شد را به صورت لیستی زیر تکست باکس نمایش بدیم
    به فرض این که در لیست داده هایمون 10 تا داده داریم که توش کلمه ی گل هست به طور مثال این 5 تا نمایش داده میشه
    ارامش گل زیبا
    خواب گل
    گل ابی
    گلگیر ماشین
    گل نیلوفر


    همونجور که میبینید گل هر جایی باشه بازم نشونش میده حتی مثلا گلگیر
    الان من چجووری چنین تکست باکسی بسازم ؟ لطفا راهنمایی کنید
    (میدونم قبلا یه چیزی شبیه به این در انجمن دیده بودم ولی الان هرچقدر گشتم چیزی پیدا نشد لطفا راهنمایی کنید)

    سپاس

    (داده ها به تریتیب حروف مرتب بشوند)

  2. #2
    کاربر دائمی آواتار khokhan
    تاریخ عضویت
    دی 1388
    محل زندگی
    اسکو
    پست
    2,176

    نقل قول: جستجوی هوشمند در تکست باکس (همانند جستجو گوگل)

    آخرین ویرایش به وسیله khokhan : چهارشنبه 25 بهمن 1391 در 23:25 عصر

  3. #3

    نقل قول: جستجوی هوشمند در تکست باکس (همانند جستجو گوگل)

    نقل قول نوشته شده توسط khokhan مشاهده تاپیک
    درود بر شما

    اینم لینکش عزیز دل برادر

    http://www.codeproject.com/Articles/...mplete-TextBox
    ممنون ولی این ظاهرا خودش اومده گفته گر کاربر این کلمه ها را زد اینجوری بشه (برای مثال شما اگر حرف A را بزنی هیچی نمیاد ولی اگر Az بزنی یه چند مورد نشون میده چون AZ را در لیستش قرار داده)
    من برا یه لیست که شامل 35 هزار تا خط میشه و قراره تو این 35 هزار خط جستجو انجام بشه بیام چقدر چیز بنویسم ؟

  4. #4
    کاربر دائمی آواتار khokhan
    تاریخ عضویت
    دی 1388
    محل زندگی
    اسکو
    پست
    2,176

    نقل قول: جستجوی هوشمند در تکست باکس (همانند جستجو گوگل)

    اینم از نمونه ای که خودم ساختمش
    البته باید فارسی تایپ کنید ودیگه اینکه همه حروف فارسی رو ننوشتم واینکه میشه کامش کرد وازش یه dll ساخت
    فایل های ضمیمه فایل های ضمیمه

  5. #5

    نقل قول: جستجوی هوشمند در تکست باکس (همانند جستجو گوگل)

    البته تکست باکس ، اول کلمات رو مقایسه میکنه و فقط کلماتی که با متن وارد شده شروع بشن رو نشون میده.

    برای بدست آوردن همه عباراتی که شامل حروف وارد شده باشند از کمبوباکس استفاده کنید. همه مقادیر رو در یک لیست رشته ای ذخیره کنید. بعد مقادیری که شامل حروف وارد شده هستند رو جدا کرده به کمبو اضافه کنید و منوی آبشاری رو نشون بدید:

    List<string> lstSource;
    List<string> lstItemsForAdd;
    private void Form1_Load(object sender, EventArgs e)
    {
    lstSource = new List<string>();
    lstSource.AddRange(new string[] { "ارامش گل زیبا", "آرامش", "کبوتر", "بهار", "زمستان", "گل نیلوفر", "گلگیر ماشین", "گل ابی", "خواب گل" });
    }
    private void comboBox1_TextUpdate(object sender, EventArgs e)
    {
    comboBox1.Items.Clear();
    if (!string.IsNullOrEmpty(comboBox1.Text))
    {
    lstItemsForAdd = lstSource.Where(item => item.Contains(comboBox1.Text)).ToList();
    lstItemsForAdd.Insert(0, string.Empty);
    comboBox1.Items.AddRange(lstItemsForAdd.ToArray()) ;
    lstItemsForAdd.Clear();
    comboBox1.Select(comboBox1.Text.Length, 0);
    comboBox1.DroppedDown = true;
    }
    }

  6. #6

    نقل قول: جستجوی هوشمند در تکست باکس (همانند جستجو گوگل)

    ممنون از هردوی شما
    ولی در کل روش دوم یعنی روش جناب Mahmoud.Afrad خیلی برای من کار امد تر است ظاهرا
    بازم ازشون تشکر میکنم

    فقط 2 تا مشکل اینجا دارم با این روش
    1- اگر با حرف A مثلا 10000 تا کورد باشه همه را نشون میده :) چجوری میشه این دارپ دان را کنترلش کرد که مثلا فقط 10 تا اول را نشون بدهد ؟
    2 - وقتی دراپ دانِ کمبوباکس باز میشه نشانگر موس میپره میره داخل کمبوباکس و حالت انتخابی را ایجاد میکنه (فک کنم همون فوکوس بشه !) حالا جلوی این را هم میشه گرفت که نشانگر نره و حالت عادی خودش را حفظ کنه ؟ (اینجوری که میپره یه جورای اجباری میشه انتخاب !)
    <برای به ترتیب حروف بدون هم فکر میکنم باید یه تابع بنویسیم که قبل از اینکه مقادیر رو در لیست رشته ای ذخیره کنه اونا را مرتب کنه ! درسته ؟>
    بعد یه سوال این کاری که میخوام بکنم برای چیزی حدود 35 هزار خط داده (دقیقا اسم 34550 اسم فیلم!) اصولیه ؟ یعنی زمانگیر نمیشه و کند بشه ؟ پیشنهادی چیزی دارین ؟ سپاس
    سپاس
    آخرین ویرایش به وسیله mehrdad1991h : پنج شنبه 26 بهمن 1391 در 00:54 صبح

  7. #7

    نقل قول: جستجوی هوشمند در تکست باکس (همانند جستجو گوگل)

    برای نشون دادن فقط 5 تا میتونی Take(5) رو اضافه کنی. برای مرتب سازی هم OrderBy(item => item).

    lstItemsForAdd = lstSource.Where(item => item.Contains(textBox1.Text)).Take(5).OrderBy(item => item).ToList();




    به نظرم یک تکست باکس و یک لیست باکس استفاده کنی بهتره(نتیجه در لیست باکس به نمایش در میاد):

    List<string> lstSource;
    List<string> lstItemsForAdd;
    private void Form1_Load(object sender, EventArgs e)
    {
    listBox1.Width = textBox1.Width;
    listBox1.Left = textBox1.Left;
    listBox1.Top = textBox1.Bottom;
    listBox1.Hide();
    lstSource = new List<string>();
    lstSource.AddRange(new string[] { "ارامش گل زیبا", "آرامش", "کبوتر", "بهار", "زمستان", "گل نیلوفر", "گلگیر ماشین", "گل ابی", "خواب گل" });
    }

    private void textBox1_TextChanged(object sender, EventArgs e)
    {
    listBox1.Items.Clear();
    if (!string.IsNullOrEmpty(textBox1.Text))
    {
    lstItemsForAdd = lstSource.Where(item => item.Contains(textBox1.Text)).Take(5).ToList();
    if (lstItemsForAdd != null)
    {
    listBox1.Items.AddRange(lstItemsForAdd.ToArray());
    listBox1.Show();
    }
    lstItemsForAdd.Clear();
    }
    else
    {
    listBox1.Hide();
    }
    }

    private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
    textBox1.Text = Convert.ToString(listBox1.SelectedItem);
    listBox1.Hide();
    textBox1.Focus();
    textBox1.Select(textBox1.Text.Length, 0);
    }

  8. #8
    کاربر دائمی آواتار hossein_sh2008
    تاریخ عضویت
    مهر 1387
    محل زندگی
    استان فارس
    پست
    149

    نقل قول: جستجوی هوشمند در تکست باکس (همانند جستجو گوگل)

    با سلام خدمت دوستان

    به نظر من روش كامبو باكس ارجعيت بيشتري داره ولي اين روشها زماني كارايي بيشتري دارند كه داده ها رو از بانك بخونن نه ما دستي بهشون اضافه كنيم،آيا يكي از دوستان نمونه اي از تلفيق بانك با اين كامبو باكس يا تكست باكس داره كه در اختيار همه قرار بده


    با تشكر از زحماتتون

  9. #9

    نقل قول: جستجوی هوشمند در تکست باکس (همانند جستجو گوگل)

    اقا اینجوری فایده نداره من داده هام خیلی زیاده 35 هزار تا هست و این باعث میشه برنامه هنگ کنه ....
    یک راه حل میخوام که نمیدونم بر اساس بیشترین سرچ یا نمیدونم بر یه اساسی 5 مورد را نشون بدهد و یه جوری باشه که نخواد کل 35 هزار تا را سرچ کنه
    یه برنامه کوچیک که بخواد 35 هزار تا را چک کنه برا این که یه اسم به کاربر نشون بده و این اسم نشون دادن 2 ساعت طول بکشه که به درد نمیخوره !!!!

    من چه کنم ؟
    لطفا کمک

  10. #10

    نقل قول: جستجوی هوشمند در تکست باکس (همانند جستجو گوگل)

    این اطلاعات کجا ذخیره میشه؟
    میتونی اطلاعات را در دیتاتیبل لود کنید و دیتاتیبل را فیلتر کنید.

  11. #11
    کاربر دائمی آواتار khokhan
    تاریخ عضویت
    دی 1388
    محل زندگی
    اسکو
    پست
    2,176

    نقل قول: جستجوی هوشمند در تکست باکس (همانند جستجو گوگل)

    نقل قول نوشته شده توسط mehrdad1991h مشاهده تاپیک
    اقا اینجوری فایده نداره من داده هام خیلی زیاده 35 هزار تا هست و این باعث میشه برنامه هنگ کنه ....
    یک راه حل میخوام که نمیدونم بر اساس بیشترین سرچ یا نمیدونم بر یه اساسی 5 مورد را نشون بدهد و یه جوری باشه که نخواد کل 35 هزار تا را سرچ کنه
    یه برنامه کوچیک که بخواد 35 هزار تا را چک کنه برا این که یه اسم به کاربر نشون بده و این اسم نشون دادن 2 ساعت طول بکشه که به درد نمیخوره !!!!

    من چه کنم ؟
    لطفا کمک

    درود برشما

    یه دیتابیس xml چاره کار توست همه رو می ریز ی توش وبراساس حرف اول اسامی اطلاعات رو فیلتر می کنی

    والسلام نامه تمام

  12. #12

    نقل قول: جستجوی هوشمند در تکست باکس (همانند جستجو گوگل)

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    این اطلاعات کجا ذخیره میشه؟
    میتونی اطلاعات را در دیتاتیبل لود کنید و دیتاتیبل را فیلتر کنید.
    جایی ذخیره نمیشن !!!! به صورت پیش فرض در لیست باکس یا کمبوباکس در برنامه میخوام قرارشون بدم ! و وقتی شروع کرد به تایپ در تکست باکس نام اینا را بهش نشون بده

    نقل قول نوشته شده توسط khokhan مشاهده تاپیک
    درود برشما

    یه دیتابیس xml چاره کار توست همه رو می ریز ی توش وبراساس حرف اول اسامی اطلاعات رو فیلتر می کنی

    والسلام نامه تمام
    این اطلاعات را من الان از یه فایل xml دارم استخراج میکنم بعد از 3 ساعت تازه 15664 تا نام از بین 34550 تا در اورده !!!! (دارم نام ها را جدا میکنم که در لیست باکسی کمبوباکسی چیزی در برنامه بریزمشون)
    حالا میشه واضح تر بگید باید چی کار کرد ، البته فکر نکنم اینی که میگی فایده داشته باشه چون باید بیاد ک فایل xml را بخونه دوباره و خود اینم زمان بر است !!!! ضمن این که با این حالتی که شما گفتید فقط به حرف اول حساس میشه و دیگه کلمه اگه بین دو کلمه ی دیگه قرار بگیره دیگه نمیتونه از xml دربیاره چون به ترتیب حروف مرتب شده و نمیدونه کجا را باید بگرده ...

    الان چیزی به ذهنتون میرسه ؟

  13. #13

    نقل قول: جستجوی هوشمند در تکست باکس (همانند جستجو گوگل)

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    مگر چطوری اطلاعات رو از xml میخونی که 3 ساعت طول کشیده هنوز پردازش تموم نشده. کدی که اطلاعات رو از فایل xml میخونی را همراه نمونه اطلاعاتی که داخل فایل xml هست را بزارید.
    این کدی که من استفاده کردم


    int a = 0;
    String xml = "";
    String link = "link.......show.xml";
    WebClient webClient = new WebClient();
    xml = webClient.DownloadString(link);
    XmlDocument doc = new XmlDocument();
    doc.Load(new StringReader(xml));
    List<ResultItem> results = new List<ResultItem>();

    if (doc.DocumentElement.HasChildNodes)
    {

    XmlNodeList series = doc.DocumentElement.ChildNodes;

    foreach (XmlNode serie in series)
    {
    XmlNodeList infos = serie.ChildNodes;
    for (int i = 0; i < infos.Count; i++)
    {
    if (infos[i].Name == "name")
    {

    textBox1.Text += infos[i].InnerText + " , ";
    a++;
    break;
    }
    }
    }
    }


    اینم کلاسی هست که ازش استفاده کردم

    class ResultItem
    {
    private String ShowName;
    public ResultItem(String showname)
    {
    this.ShowName = showname;
    }
    public String SName
    {
    get { return ShowName; }
    }
    }


    اینم XML

    http://services.tvrage.com/feeds/show_list.php


    اینم نمونه کدش


    <show><id>1</id><name>Fernwood 2Night</name><country>US</country><status>2</status></show>
    آخرین ویرایش به وسیله mehrdad1991h : پنج شنبه 26 بهمن 1391 در 16:50 عصر

  14. #14
    کاربر دائمی آواتار khokhan
    تاریخ عضویت
    دی 1388
    محل زندگی
    اسکو
    پست
    2,176

    نقل قول: جستجوی هوشمند در تکست باکس (همانند جستجو گوگل)

    راه دیگه اینه که :
    می تونی یه کانورتور بسازی و ایکی ثانیه همه فایلو بریزی توی sql بعد از اون هم دیگه همه چیز حله

  15. #15

    نقل قول: جستجوی هوشمند در تکست باکس (همانند جستجو گوگل)

    نقل قول نوشته شده توسط khokhan مشاهده تاپیک
    راه دیگه اینه که :
    می تونی یه کانورتور بسازی و ایکی ثانیه همه فایلو بریزی توی sql بعد از اون هم دیگه همه چیز حله
    من همه این کارها را دارم میکنم که از این چیز میزا نخوام استفاده کنم
    برنامه را میخوام خیلی عادی کاربر بدون نیاز داشتن به هیچ چیزی بتونه ازش استفاده کنه اینجوری باید اس کیو ال را هم نصب کنه و وصلش کنه و.... (در کل این بانک اطلاعاتی مشکلش اینه که هم حجم برنامه را میبره بالا هم به نظر من ارزش نداره فقط و فقط برای همین یه کار بیام کاری کنم که همه کاربرا به راحتی و بیدردسر نتونن از برنامه استفاده کنن اگه نهایتا دیدم واقعا لازمه از بانک استفاده کنم باید قید این مزیت را برای برنامه بزنم

  16. #16

    نقل قول: جستجوی هوشمند در تکست باکس (همانند جستجو گوگل)

    اگر اطلاعات فایل xml ثابت هست یکبار دانلود و در فایل ذخیره کنید تا دفعات بعد نیاز به دانلود نباشه.
    یک شئ برای نگهداری سند xml و یک لیست برای نتیجه جستجو در سطح کلاس تعریف کنید:

    XDocument xdoc;
    List<string> lstItemsForAdd;

    در لودفرم یا سازنده فرم اطلاعات رو در سند xdoc لود کنید. چیزی شبیه این(طبق پست قبلیم):

    listBox1.Width = textBox1.Width;
    listBox1.Left = textBox1.Left;
    listBox1.Top = textBox1.Bottom;
    listBox1.Hide();

    string xmlPath = System.IO.Path.Combine(Application.StartupPath, "show_list.xml");
    if (!File.Exists(xmlPath))
    {
    string xmlData = null;
    string link = "http://services.tvrage.com/feeds/show_list.php";
    using (WebClient webClient = new WebClient())
    {
    xmlData = webClient.DownloadString(link);
    xdoc = XDocument.Load(new StringReader(xmlData));
    xdoc.Save(xmlPath);
    }
    }
    else
    {
    xdoc = XDocument.Load(xmlPath);
    }


    برای جستجو در سند xml هم اصلا نیاز به اون حلقه for نیست. کافیه از متدهای کلاس xdoc استفاده کنید.
    یعنی به جای کد زمانگیر زیر

    if (doc.DocumentElement.HasChildNodes)
    {
    ......}


    فقط یک خط کافیه
    lstItemsForAdd = xdoc.Descendants("name").Where(item => item.Value.Contains(textBox1.Text)).Select(item => item.Value).Take(5).OrderBy(item => item).ToList();

    متد Descendants عمل جستجو در کل سند رو انجام میده. به همین راحتی.
    سرعتش هم بسیار بالاست و تقریبا همون لحظه جواب رو بدست میاره.
    آخرین ویرایش به وسیله Mahmoud.Afrad : جمعه 27 بهمن 1391 در 20:41 عصر

  17. #17
    کاربر دائمی آواتار FastCode
    تاریخ عضویت
    تیر 1388
    محل زندگی
    /dev/null
    پست
    3,486

    نقل قول: جستجوی هوشمند در تکست باکس (همانند جستجو گوگل)

    میتونی از sqlite استفاده کنی.کاربر هم مجبور نیست چیزی نصب کنه.
    اگر هم میخواهی حتماً فایل XML باشه میتونی تبدیل کنی به SQLite و از یک دیتابیس درون حافظه استفاده کنی.


    در ضمن روش جست و جویی که استفاده میکنید خیلی خیلی بده.همتون.
    http://stackoverflow.com/questions/2...le-values?rq=1

  18. #18

    نقل قول: جستجوی هوشمند در تکست باکس (همانند جستجو گوگل)

    نقل قول نوشته شده توسط FastCode مشاهده تاپیک
    میتونی از sqlite استفاده کنی.کاربر هم مجبور نیست چیزی نصب کنه.
    اگر هم میخواهی حتماً فایل XML باشه میتونی تبدیل کنی به SQLite و از یک دیتابیس درون حافظه استفاده کنی.


    در ضمن روش جست و جویی که استفاده میکنید خیلی خیلی بده.همتون.
    http://stackoverflow.com/questions/2...le-values?rq=1
    اصلا اسراری برا این نداریم که از XML استفاده بشه
    فقط میخوام جوری باشه که کاربر نیاز نباشه کاری کنه و راحت به نتیجه برسه
    روش شما هم خوبه ولی من تا الان با ایین چیزی که شما میگی برخورد نکردم که بتونم در اون سطح حرفه ای کار انجام بدم و الگوریتمی بهتر از این بلد نبودم
    روش جناب Mahmoud.Afrad هم ظاهرا کارامد هستش و میشه ازش استفاده کرد (از ایشون هم تشکر میکنم بابت وقتی که گذاشتن)
    ولی دیگه در همین حد علم ما بوده ...!!! یا شاید واقعا بالاتر از این نیاز نبوده ؟ نمیدونم
    اگر امکانش هست میتونید نمونه ای چیزی قرار دهید شما هم ؟
    سپاس

  19. #19
    کاربر دائمی آواتار FastCode
    تاریخ عضویت
    تیر 1388
    محل زندگی
    /dev/null
    پست
    3,486

    نقل قول: جستجوی هوشمند در تکست باکس (همانند جستجو گوگل)

    نقل قول نوشته شده توسط mehrdad1991h مشاهده تاپیک
    اصلا اسراری برا این نداریم که از XML استفاده بشه
    فقط میخوام جوری باشه که کاربر نیاز نباشه کاری کنه و راحت به نتیجه برسه
    روش شما هم خوبه ولی من تا الان با ایین چیزی که شما میگی برخورد نکردم که بتونم در اون سطح حرفه ای کار انجام بدم و الگوریتمی بهتر از این بلد نبودم
    روش جناب Mahmoud.Afrad هم ظاهرا کارامد هستش و میشه ازش استفاده کرد (از ایشون هم تشکر میکنم بابت وقتی که گذاشتن)
    ولی دیگه در همین حد علم ما بوده ...!!! یا شاید واقعا بالاتر از این نیاز نبوده ؟ نمیدونم
    اگر امکانش هست میتونید نمونه ای چیزی قرار دهید شما هم ؟
    سپاس
    توی اون لینک باید نمونش باشه.
    اگر خودتون سعی کنید بنویسیدش خیلی بهتره چون توی مسیرتون ممکنه به خیلی چیزهای جالبتر مثل Merge Joinهای Hybrid یا FTS یا حتی استفاده از CUDA در جست و جو هم بر بخورید که مطالعشون واقعاً مفبده.

    راستش رو بخواهید من خیلی فرصتش رو هم ندارم.

  20. #20

    نقل قول: جستجوی هوشمند در تکست باکس (همانند جستجو گوگل)

    در این خط من چه کنم که به حروف کوچک و بزرگ حساس نباشد ؟
    میدونم از این متد
    StringComparison.OrdinalIgnoreCase

    باید استفاده کنم
    ولی کجای این خط :

    lstItemsForAdd = xdoc.Descendants("name").Where(item => item.Value.Contains(textBox1.Text)).Select(item => item.Value).Take(5).OrderBy(item => item).ToList();


    میشه ازش استفاده کرد ؟
    راهی هست که بشه به حروف کوچیک و بزرگ توجه نکنه ؟

  21. #21
    کاربر دائمی آواتار FastCode
    تاریخ عضویت
    تیر 1388
    محل زندگی
    /dev/null
    پست
    3,486

    نقل قول: جستجوی هوشمند در تکست باکس (همانند جستجو گوگل)

    الان IDE ندارم.ساعت دو صبحه.
    Contains(textBox1.Text
    میتونه بشه
    Exists(T=>T.WhatEver....

    احتمالاً Exists اشتباهه.نمیدونم اسم تابعش چی بود.مغزم دیگه کار نمیکنه
    آخرین ویرایش به وسیله FastCode : دوشنبه 30 بهمن 1391 در 01:15 صبح

  22. #22

    نقل قول: جستجوی هوشمند در تکست باکس (همانند جستجو گوگل)

    نقل قول نوشته شده توسط FastCode مشاهده تاپیک
    الان IDE ندارم.ساعت دو صبحه.
    Contains(textBox1.Text
    میتونه بشه
    Exists(T=>T.WhatEver....

    احتمالاً Exists اشتباهه.نمیدونم اسم تابعش چی بود.مغزم دیگه کار نمیکنه
    Press ENTER to look up in Wiktionary or CTRL+ENTER to look up in Wikipedia
    ممنون که همینم جواب دادین ولی در اینجا فقط چندتا چیز میشه استفاده کرد که به کار ما نمیان مثل
    Equals - Except و...... که اینا هم به درد اینجا نمیخورن

    اگرم این را میگین
    Exists(element => element
    اینم ماله لیسته اینجا نمیشه استفاده کرد یا شایدم من بلد نیستم ولی نشد !

  23. #23

    نقل قول: جستجوی هوشمند در تکست باکس (همانند جستجو گوگل)

    از متد tolower استفاده کنید. هم متن تکست باکس و هم هر کدام از item ها :

    string strSearch = textBox1.Text.ToLower();
    lstItemsForAdd = xdoc.Descendants("name")
    .Where(item => item.Value.ToLower().Contains(strSearch))
    .Select(item => item.Value)
    .Take(5)
    .OrderBy(item => item)
    .ToList();

  24. #24

    نقل قول: جستجوی هوشمند در تکست باکس (همانند جستجو گوگل)

    شاید به درد دوستان بخوره

    private void radTextBox7_TextChanged(object sender, EventArgs e)
    {
    try
    {
    radTextBox7.AutoCompleteMode = AutoCompleteMode.Suggest;
    radTextBox7.AutoCompleteSource = AutoCompleteSource.CustomSource;
    AutoCompleteStringCollection col = new AutoCompleteStringCollection();
    col.AddRange(new string[]
    {
    "بانک ملت",
    "بانک رفاه کارگران",
    "بانک مسکن",
    "بانک سپه",
    "بانک کشاورزي",
    "بانک ملي ايران",
    "بانک تجارت",
    "بانک صادرات ايران",
    "پست بانک ايران",
    "بانک توسعه تعاون",
    "بانک پارسیان",
    "بانک قرض الحسنه مهر ایران",
    "بانک دی"
    });
    radTextBox7.AutoCompleteCustomSource = col;

    }
    catch
    {
    }
    }

  25. #25

    نقل قول: جستجوی هوشمند در تکست باکس (همانند جستجو گوگل)

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    البته تکست باکس ، اول کلمات رو مقایسه میکنه و فقط کلماتی که با متن وارد شده شروع بشن رو نشون میده.

    برای بدست آوردن همه عباراتی که شامل حروف وارد شده باشند از کمبوباکس استفاده کنید. همه مقادیر رو در یک لیست رشته ای ذخیره کنید. بعد مقادیری که شامل حروف وارد شده هستند رو جدا کرده به کمبو اضافه کنید و منوی آبشاری رو نشون بدید:

    List<string> lstSource;
    List<string> lstItemsForAdd;
    private void Form1_Load(object sender, EventArgs e)
    {
    lstSource = new List<string>();
    lstSource.AddRange(new string[] { "ارامش گل زیبا", "آرامش", "کبوتر", "بهار", "زمستان", "گل نیلوفر", "گلگیر ماشین", "گل ابی", "خواب گل" });
    }
    private void comboBox1_TextUpdate(object sender, EventArgs e)
    {
    comboBox1.Items.Clear();
    if (!string.IsNullOrEmpty(comboBox1.Text))
    {
    lstItemsForAdd = lstSource.Where(item => item.Contains(comboBox1.Text)).ToList();
    lstItemsForAdd.Insert(0, string.Empty);
    comboBox1.Items.AddRange(lstItemsForAdd.ToArray()) ;
    lstItemsForAdd.Clear();
    comboBox1.Select(comboBox1.Text.Length, 0);
    comboBox1.DroppedDown = true;
    }
    }
    با سلام و تشکر از پاسخ خوبتان

    خیلی به کار من آمد. ولی میخواستم علاوه بر نام و نام خانوادگی id مربوطه به سطر نام و نام خانوادگی نیز در لیست ذخیره شود و بتوانم به id رکورد دسترسی داشته باشم. یعنی وقتی کاربر یک مقدار از کمبوباکس را انتخاب می کند، id مربوطه را بتوانم دسترسی داشته باشم.

    وقتی کلید بک اسپیس تا آخر زده می شود و کل نوشته پاک میشود و از اول نوشته می شود، طول کمبوباکس خیلی کوتاه است. میخواستم طول کمبوباکس 10 شود. منظور از طول کمبوباکس اینکه اگر داده های داخل کمبو باکس بیش از ده تااست کمبوباکس اسکرول بخورد نه اینکه یک کمبوباکس طولانی بدون اسکرول باز شود.. کد زیر را نوشتم ولی در اولین اجرا جواب میدهد ولی بعد از کلید بک اسپیس و تایپ دوباره کلمه، طول کمبوباکس 1 می شود.
    comboBoxEx1.IntegralHeight = false;
    comboBoxEx1.MaxDropDownItems = 20;
    comboBoxEx1.DropDownStyle = ComboBoxStyle.DropDown;


    این کد پر کردن لیست از بانک
                SqlConnection con = new SqlConnection();
    con.ConnectionString = "Data Source=.;Initial Catalog=pp;Integrated Security=True";
    SqlDataReader dr;
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = con;
    cmd.CommandText = "select * from personel";
    con.Open();
    dr = cmd.ExecuteReader();
    while (dr.Read())
    {
    lstSource.Add(dr["name_personel"].ToString());
    }


    con.Close();
    آخرین ویرایش به وسیله m_karimi : یک شنبه 10 دی 1396 در 22:22 عصر

  26. #26

    نقل قول: جستجوی هوشمند در تکست باکس (همانند جستجو گوگل)

    نقل قول نوشته شده توسط m_karimi مشاهده تاپیک
    با سلام و تشکر از پاسخ خوبتان

    خیلی به کار من آمد. ولی میخواستم علاوه بر نام و نام خانوادگی id مربوطه به سطر نام و نام خانوادگی نیز در لیست ذخیره شود و بتوانم به id رکورد دسترسی داشته باشم. یعنی وقتی کاربر یک مقدار از کمبوباکس را انتخاب می کند، id مربوطه را بتوانم دسترسی داشته باشم.


    بدست آوردن ID متناظر با آیتم انتخابی از ComboBox

  27. #27

    نقل قول: جستجوی هوشمند در تکست باکس (همانند جستجو گوگل)

    یک مشکل اینکه این روش لیست که به کار بردم، اشاره گر موس روی فرم ظاهر نمیشود.

    روش اول خود من از همین روشی بود که لینکش را دادید ولی با این روش برای جستجوی نام و نام خانوادگی حتما کاربر باید اول نام را سرچ می کرد و فقط نام و نام خانوادگیهایی جستجو می شد که اولش با این کلمه تایپ شده شروع می شد ولی من با روش قبل شما توانستم هر اسمی که شامل حرف تایپ شده است را جستجو کنم. فقط مشکلش گرفتن آیدی بود که خودم هنگام ذخیره کردن نام و نام خانوادگی در لیست آیدی ان هم به عنوان رشته به آن چسباندم و از این طربق به آیدی دسترسی پیدا کردم. دوست داشتم در لیست بتوانم دو پارامتر نام و آیدی را جدا ذخیره و بعد آن را با انتخاب کاربر از کمبو باکس در رویداد comboboxselectedindex به آن دسترسی پیدا کنم.
    آخرین ویرایش به وسیله m_karimi : دوشنبه 11 دی 1396 در 14:32 عصر

  28. #28

    نقل قول: جستجوی هوشمند در TextBox (همانند جستجو گوگل)

    m_karimi به جای استفاده از sqldatareader و اضافه کردن به لیست ، طبق کد تاپیک " بدست آوردن ID متناظر با آیتم انتخابی از ComboBox" از datatable استفاده کنید و اونو به دیتاسورس کمبوباکس بدید. باید displaymember و valuemember را هم ست کنید.

  29. #29

    نقل قول: جستجوی هوشمند در TextBox (همانند جستجو گوگل)

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    m_karimi به جای استفاده از sqldatareader و اضافه کردن به لیست ، طبق کد تاپیک " بدست آوردن ID متناظر با آیتم انتخابی از ComboBox" از datatable استفاده کنید و اونو به دیتاسورس کمبوباکس بدید. باید displaymember و valuemember را هم ست کنید.
    در این صورت آیا جستجوی نام و نام خانوادگی در کمبوباکس طبق مثال زیر که همه کلماتی که شامل حرف مورد جستجو باشد را بیاورد.
    مثال
    مثلا کلمه ی "گل" در کمبوباکس وارد شده و قراره به طور مثال 5 داده اولی که داخلشون گل پیدا شد را به صورت لیستی در کمبوباکس نمایش بدیم
    به فرض این که در لیست داده هایمون 10 تا داده داریم که توش کلمه ی گل هست به طور مثال این 5 تا نمایش داده میشه
    ارامش گل زیبا
    خواب گل
    گل ابی
    گلگیر ماشین
    گل نیلوفر

    مثلا اگر کلمه "گل" جستجو می شود، کلمه خواب گل هم بیاورد نه اینکه فقط کلماتی که اولشان گل است بیاید.

    SqlConnection con = new SqlConnection();
    con.ConnectionString = KB.connection_string;
    Operation.open(con);

    SqlCommand cmd = new SqlCommand();
    cmd.CommandText = "select id_madreseh,txt_madreseh from madreseh where statusm=1";
    cmd.Connection = con;

    System.Data.DataTable dt = new System.Data.DataTable();

    SqlDataAdapter da = new SqlDataAdapter(cmd);
    da.Fill(dt);

    cbo_namemadreseh.DataSource = dt;
    cbo_namemadreseh.DisplayMember = "txt_madreseh";
    cbo_namemadreseh.ValueMember = "id_madreseh";
    cbo_namemadreseh.Text = "نام آموزشگاه";
    Operation.close(con);


    این کدی است که من برای جستجوی نام مدرسه نوشته بودم و دقیقا طبق روش مورد نظر شماست ولی مشکل اینجاست که کلماتی که شامل حرف مورد جستجو است را نمیاورد و فقط کلماتی که اولش با کلمه مورد جستجو است میاورد. به این دلیل من روش لیست شما را برگزیدم.

  30. #30

    نقل قول: جستجوی هوشمند در TextBox (همانند جستجو گوگل)

    دو تا راه دارید. یکی اینکه با تغییر متن وارد شده توسط کاربر، یک کوئری (با استفاده از Like) بزنید و اطلاعات رو دریافت و در کنترل مورد نظر نمایش بدید.
    اگر اطلاعات جدول زیاد نیست و در آینده هم تعداد زیاد نخواهد بود، میتونید همه رو در دیتاتیبل لود کنید و اونو فیلتر کنید.

    برای هر دو مورد تاپیک هایی قبلا ایجاد شده که میتونید جستجو کنید.

  31. #31

    نقل قول: جستجوی هوشمند در TextBox (همانند جستجو گوگل)

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    دو تا راه دارید. یکی اینکه با تغییر متن وارد شده توسط کاربر، یک کوئری (با استفاده از Like) بزنید و اطلاعات رو دریافت و در کنترل مورد نظر نمایش بدید.
    اگر اطلاعات جدول زیاد نیست و در آینده هم تعداد زیاد نخواهد بود، میتونید همه رو در دیتاتیبل لود کنید و اونو فیلتر کنید.

    برای هر دو مورد تاپیک هایی قبلا ایجاد شده که میتونید جستجو کنید.
    با سلام
    من کد زیر را در رویداد textupdate نوشتم ولی مشکلش اینجاست که وقتی یک حرف در کمبوباکس تایپ میکنم تمام مدرسه هایی که آن حرف در آن هست را میاورد. و اولین آن را در کمبوباکس به حالت انتخاب شده ظاهر میکند. من میخواهم بتوانم یک کلمه در کمبوباکس تایپ کنم و مدارسی که شامل آن کلمه هست را بیاورد ولی اولین حرف را که تایپ می کنم همه مدارس شامل ان حرف را میاورد.
    در واقع مثل سرچ خود کمبو باکس میخواهم با این تفاوت که همه کلماتی که شامل آن کلمه سرچ شده است بیاورد.
     SqlConnection connn = new SqlConnection();
    connn.ConnectionString = KB.connection_string;
    Operation.open(connn);
    DataSet ds = new DataSet();
    SqlDataAdapter objDataAdapter = new SqlDataAdapter("Select * From madreseh", connn);
    objDataAdapter.Fill(ds, "madreseh");

    DataTable dt = new DataTable();
    dt = ds.Tables["madreseh"];
    dt.DefaultView.RowFilter = "txt_madreseh like'%" + cbo_namemadreseh.Text.Trim() + "%'";
    if (dt.DefaultView.Count == 0)
    MessageBox.Show("!" + "کلمه ی مورد نظر پیدا نشد ");
    cbo_namemadreseh.DataSource = dt;
    cbo_namemadreseh.DisplayMember = "txt_madreseh";
    cbo_namemadreseh.ValueMember = "id_madreseh";
    cbo_namemadreseh.DroppedDown = true;


    اگر ممکن است یک نمونه بگذارید خیلی سرچ کردم ولی نمیدانم چه کار کنم
    آخرین ویرایش به وسیله m_karimi : جمعه 15 دی 1396 در 13:29 عصر

تاپیک های مشابه

  1. سوال: سوالی در مورد نتایج جستجو گوگل
    نوشته شده توسط prans.info در بخش PHP
    پاسخ: 1
    آخرین پست: سه شنبه 09 دی 1393, 21:28 عصر
  2. منظور از جستجوی هوشمند در این سایت؟
    نوشته شده توسط bftarane در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: یک شنبه 20 بهمن 1392, 21:53 عصر
  3. سوال: امکان جستجو در فیلد همانند جستجوی گوگل
    نوشته شده توسط wolfstander در بخش Access
    پاسخ: 7
    آخرین پست: شنبه 05 مرداد 1392, 00:11 صبح
  4. جستجوی هوشمند در یک فرم
    نوشته شده توسط hashemi.hanieh در بخش Access
    پاسخ: 1
    آخرین پست: چهارشنبه 01 شهریور 1391, 12:12 عصر
  5. جستجو در TextBox
    نوشته شده توسط loads در بخش برنامه نویسی در 6 VB
    پاسخ: 4
    آخرین پست: سه شنبه 02 اسفند 1384, 21:05 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •