+2 امتیاز
با سلام.

سوال: بنده توی برنامه م دیتاگریدی دارم که اطلاعات کامل یک جدول رو نشون میده و میخواستم که با استفاده از چک لیست باکس و آیتم های اون که تیک خورده (یکی یا چند تا) جستجو کنم.

به طور واضح تر فیلتر کردن دیتاگرید ویو با استفاده از چند شرط

مثال:

select * from contact where checkedlistbox.item[1] =txtserach.text or checkedlistbox.item[2] =txtserach.text or...

checkedlistbox.item[1]= homephone

checkedlistbox.item[2]=mobile

checkedlistbox.item[3]=....

با تشکر
بسته شده

2 پاسخ

+1 امتیاز
 
بهترین پاسخ

سلام ، کار زیاد مشکلی نیست ، شما می تونید یک متد طراحی کنید که کوئری رو واستون ایجاد کنه . به شکلی که حالت Dynamic داشته باشه و بسته به آیتم های تیک خورده شده بیاد کوئری رو ایجاد کنه . بنده در زیر یک نمونه رو واستون نوشتم ، شما می تونید از همین استفاده کنید یا اینکه به عنوان یک ایده ازش استفاده کنید و برای خودتون شخصی سازیش کنید : 

private string GetQuery()
        {
            string FinalQuery = "SELECT * FROM Contact WHERE ";

            int CheckedItemsCount = this.checkedListBox1.CheckedItems.Count - 1;
            for (int counter = 0; counter < this.checkedListBox1.CheckedItems.Count; counter++)
            {
                FinalQuery += this.checkedListBox1.CheckedItems[counter].ToString() + " = '" + this.txtSearch.Text.Trim() + "'";
                if (counter != CheckedItemsCount)
                {
                    FinalQuery += " OR ";
                }
            }
            return FinalQuery;
        }

استفاده : 

            this.richTextBox1.Text = GetQuery();

نمونه خروجی : 

سلام.

ممنون از پاسخ تون.

راستش جواب شما برای جستجو و سلکت از داخل خود دیتابیس هستش که من فیلتر کردن دیتاگرید ویو رو با این شرایط می خواستم والبته که آیتم های چک لیست من فارسی هستن.

البته من خودم  هم به جواب رسیدم و کدها رو در اینجا قرار میدم تا دیگر دوستان هم بتونن استفاده کنن.

}= string[] Company
,"CompanyName"
            ,"ModirAmel"
            ,"CompanyTel"
            ,"Mobile"
            "CompanyAddress"
                         ;{

private void button1_Click(object sender, EventArgs e)y
        }
;[string[] str1= new string[checkedListBox2.CheckedItems.Count
;int j = 0
(foreach (int indexChecked in checkedListBox2.CheckedIndices
            }
;[str1[j] = Company[indexChecked
                ;++j
            {

(++for (int i = 0; i < (str1.Count()) - 1; i
            }
;DataView dv = (DataView)companiesDataGridView.DataSource        
(""==()if (companiesSearchBox.Text.Trim       
;""=dv.RowFilter        
                dv.RowFilter = string.Format("CONVERT({0},System.String) like '%{1}%'", str1[i], companiesSearchBox.Text);y
            {            
       {

باز هم ممنون از وقتی که گذاشتین.

توسط (106 امتیاز) 1 5
+2 امتیاز
یک راهش این هست که شما به تعداد حالاتی که امکان پذیر هست شما دستور سلکت بنویسید یعنی اگه دوتا چک باکس دارین 3 حالت دارین باید سه تا دستور سلکت جداگانه بنویسید و هر کدوم رو مثلا در یک تکست باکس اعمال کنید یعنی به 3 تا تکست باکس جستجو نیز نیاز دارین که اگه هر کدوم انتخاب شد تکست باکس مربوط به اون نمایش داده بشه و جستجو انجام بشه که باید خطاهارو نیز پیش بینی کنید که اگر هر دو گزینه انتخاب شد فقط تکست باکس سوم نمایش داده بشه نه هر سه تا تکست باکش امیدوارم متوجه منظورم شده باشین
سوال جدید

2,337 سوال

2,871 پاسخ

3,725 دیدگاه

3,921 کاربر

دسته بندی ها

...