PDA

View Full Version : فیلترِ datagridview توسط comboBox



negar222
پنج شنبه 25 شهریور 1395, 16:01 عصر
سلام
من برای فیلتر کردن datagriview توسط id تکس موجود در comboBox کد زیر رو نوشتم ولی خطا میده..
ممنون میشم راهنماییم کنید..


private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{

dataGridView1.DataSource = string.Format("SELECT * FROM tbl_kala WHERE catid=comboBox1.SelectedValue");

}

mrprestige
پنج شنبه 25 شهریور 1395, 19:31 عصر
عرض سلام و ادب ، در وحله اول شما اشتباهی که کردید اینه که دستور comboBox1.SelectedValue رو داخل دابل کوتیشن قراردادید و و هرچی که داخل دابل کوتیشن قرار بگیره کامپایلر اون رو به عنوان رشته در نظر میگیره باید دستور رو به این شکل تغییر بدید

dataGridView1.DataSource = string.Format("SELECT * FROM tbl_kala WHERE catid="+comboBox1.SelectedValue);

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

پیروز و موفق باشید.

negar222
پنج شنبه 25 شهریور 1395, 21:23 عصر
عرض سلام و ادب ، در وحله اول شما اشتباهی که کردید اینه که دستور comboBox1.SelectedValue رو داخل دابل کوتیشن قراردادید و و هرچی که داخل دابل کوتیشن قرار بگیره کامپایلر اون رو به عنوان رشته در نظر میگیره باید دستور رو به این شکل تغییر بدید

dataGridView1.DataSource = string.Format("SELECT * FROM tbl_kala WHERE catid="+comboBox1.SelectedValue);

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

پیروز و موفق باشید.



ممنون از راهنماییتون.. متأسفانه این کد جواب نداد..
از راهی دیگه به جواب رسیدم..

mrprestige
پنج شنبه 25 شهریور 1395, 22:05 عصر
خواهش میکنم ، کاش اون راهی که رفتید رو هم توی پست تون میزاشتید تا بقیه دوستانی که به این مشکل برخودند راحت تر به جواب برسن از این طریق کمکشون کرده باشید . خب با این حال بنده کدی که برای شما نوشتم به این صورت هست اول داخل کلاس Form این رو مینویسیم

DataTable dt;

سپس داخل رویداد SelectedIndexChanged اینو بنویسید


DataView dv = dt.DefaultView;
dv.RowFilter = string.Format("catid LIKE '%{0}%'", comboBox1.SelectedItem.ToString().Trim());
dataGridView1.DataSource = dv;


پیروز و موفق باشید

negar222
پنج شنبه 25 شهریور 1395, 23:48 عصر
خواهش میکنم ، کاش اون راهی که رفتید رو هم توی پست تون میزاشتید تا بقیه دوستانی که به این مشکل برخودند راحت تر به جواب برسن از این طریق کمکشون کرده باشید . خب با این حال بنده کدی که برای شما نوشتم به این صورت هست اول داخل کلاس Form این رو مینویسیم

DataTable dt;

سپس داخل رویداد SelectedIndexChanged اینو بنویسید


DataView dv = dt.DefaultView;
dv.RowFilter = string.Format("catid LIKE '%{0}%'", comboBox1.SelectedItem.ToString().Trim());
dataGridView1.DataSource = dv;


پیروز و موفق باشید


بله حتماً..
ممنونم از راهنماییتون ولی این کد رو امتحان کردم باز نمیدونم چرا نتیجه نداد...
من از این راه رفتم : داخل dataset توی tabelAdapter مربوط به جدول این کد رو نوشتم:

SELECT *
FROM tbl_kala
WHERE (catid = @id)

و بعد :

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{

tbl_kalaTableAdapter.FillByComboBox(dataSet1.tbl_k ala, comboBox1.SelectedIndex + 1).ToString();

}

موفق باشید..

mrprestige
جمعه 26 شهریور 1395, 00:11 صبح
بازم خواهش میکنم ... بله به این خاطر نتیجه نداده چون شما داخل Form_Load این کد رو ننوشتید (بنده این ها رو نگفتم چون فکر کردم این هارو از قبل نوشتید )

cn.Open();
SqlDataAdapter da = new SqlDataAdapter("select * from Tablename", cn);
dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
cn.Close();


cn منظور همون اسم متغییر SQLConnection هست و بعد از این هم همون روال که در پست قبل عرض کردم .

پیروز و موفق باشید.

hamid59022
سه شنبه 13 مهر 1395, 10:40 صبح
سلام فکر کنم یکم دیگه باید کاماند استرینگ رو تغییر بدین
"select * from tbl_kala where catid='"+combobox1.text+"'"