ایجاد فیلتر برای ستونی از نوع int در BindingSource
با عرض سلام و تبریک عید قربان
من با استفاده از کد زیر تونستم در ستون دیتاگرید از نوع رشته ای جستجو انجام بدم ولی در ستونی که داده از نوع int یا number جواب نمیده.
DataTable datatable1 = new DataTable();
BindingSource binding1 = new BindingSource();
binding1.DataSource = dt;
dgList.DataSource = binding1;
private void txJFaliat_TextChanged(object sender, EventArgs e)
{
binding1.Filter = string.Format("KodJFaliat like '%{0}%'", txJFaliat.Text);
}
نقل قول: جستجو در دیتاگرید در ستون از نوع int
سلام دوست من ، بنده هم این عید بزرگ رو به شما و باقی دوستان تبریک میگم . دوست عزیز این خط رو به این صورت اصلاح کن ببین جواب میده
binding1.Filter = string.Format("KodJFaliat like '%{0}%'",Convert.Toint32( txJFaliat.Text ));
نقل قول: جستجو در دیتاگرید در ستون از نوع int
نقل قول:
نوشته شده توسط
mrprestige
سلام دوست من ، بنده هم این عید بزرگ رو به شما و باقی دوستان تبریک میگم . دوست عزیز این خط رو به این صورت اصلاح کن ببین جواب میده
binding1.Filter = string.Format("KodJFaliat like '%{0}%'",Convert.Toint32( txJFaliat.Text ));
ممنون دوست عزیز
جواب نداد..
نقل قول: جستجو در datagridview در ستون از نوع int
مجددا سلام دوست من ، خب برای این کار از یه روش دیگه استفاده میکنیم به این صورت که داخل کلاس Form به این صورت بنویسید
SqlConnection _con = new SqlConnection(" کانکشن استرینگ");
SqlDataAdapter AD;
DataTable _dt;
و داخل رویداد Text_Changed اینو بنویس
_con.Open();
AD = new SqlDataAdapter("select * from TableName where KodJFaliat like ' " + Convert.ToInt32(textBox1.Text.Trim()) + "%'", _con);
_dt = new DataTable();
AD.Fill(_dt);
dataGridView1.DataSource = _dt;
_con.Close();
باز اینو خودت میتونی بهینه تر بنویسی الان چون وقت نداشتم (با عرض معذرت) فقط خواستم بدونی اصل کد چطوریه .
پیروز و موفق باشی
نقل قول: جستجو در datagridview در ستون از نوع int
سلام
کد را به صورت زیر اصلاح کنید:
binding1.Filter = string.Format("Convert(KodJFaliat , 'System.String') like '%{0}%'", txJFaliat.Text);
نقل قول: جستجو در datagridview در ستون از نوع int
دوست عزیز چون ستونت از نوع int هست نمیتونی از عملگر like استفاده کنی ، باید از عملگر = استفاده کنی
نقل قول: جستجو در datagridview در ستون از نوع int
نقل قول:
نوشته شده توسط
rahmatipoor
دوست عزیز چون ستونت از نوع int هست نمیتونی از عملگر like استفاده کنی ، باید از عملگر = استفاده کنی
سلام دوست من وقتت بخیر ، دوست عزیز میتونم بپرسم رو چه استنباطی این رو می فرمایید ؟؟ خب الان من از Like استفاده کردم و جواب هم داده ستون هم از نوع int بوده .
نقل قول: جستجو در datagridview در ستون از نوع int
ممنون
فقط یه سوالی اگر بخوام همزمان براساس دو فیلد جستجو کنم باید چکار کنم..؟
نقل قول: جستجو در datagridview در ستون از نوع int
نقل قول:
نوشته شده توسط
hosseines
ممنون
فقط یه سوالی اگر بخوام همزمان براساس دو فیلد جستجو کنم باید چکار کنم..؟
لینک زیر توضیح دادم
https://barnamenevis.org/showthread.p...=1#post1658419
نقل قول: جستجو در datagridview در ستون از نوع int
نقل قول:
نوشته شده توسط
mrprestige
سلام دوست من وقتت بخیر ، دوست عزیز میتونم بپرسم رو چه استنباطی این رو می فرمایید ؟؟ خب الان من از Like استفاده کردم و جواب هم داده ستون هم از نوع int بوده .
من نتونستم ولی شما میگید تونستید مجددا بررسی میکنم.
نقل قول:
نوشته شده توسط
hosseines
ممنون
فقط یه سوالی اگر بخوام همزمان براساس دو فیلد جستجو کنم باید چکار کنم..؟
همونطوری که آقای مدیر فرمودند از کلمه کلیدی and توی رشته filter String استفاده کنید و یک یا چند شرط دیگه هم بنویسید
نقل قول: جستجو در datagridview در ستون از نوع int
نقل قول:
نوشته شده توسط
rahmatipoor
همونطوری که آقای مدیر فرمودند از کلمه کلیدی and توی رشته filter String استفاده کنید و یک یا چند شرط دیگه هم بنویسید
دوست من لطفا در ارسال جواب دقت کنید شما که الان فرمودید با Like نمیشه و باید از عملگر = استفاده کرد . خب جناب استاد Mahmoud.Afrad هم که از Like استفاده کردند (اون هم به چند روش) دوست من . جوابتون دوپهلو و ناآگاهنه بود اینطور جواب ها باعث میشه اون بنده خدا که سوال مطرح کرده توی دریافت جوابش دچار مشکل بشه . امیدوارم از انتقادم ناراحت نشید دوست من . چون مثلا منی که مبتدی ام و اینجا ( یا کلا در این سایت ) سوالم رو مطرح میکنم میخوام که به یک جواب اصولی برسم .
امیدوارم پیروز و موفق باشید دوست عزیز.
نقل قول: جستجو در datagridview در ستون از نوع int
دوست خوبم آقایmrprestige
ازتون تشکر میکنم که تذکر میدید به دوستان چون باعث پیشرفت میشه
من هم ناراحت نشدم و خوشحال شدم
اما در مورد مطالبی که فرمودید :
اولا کدی که آقای Mahmoud.Afrad توی پست های بالا لینکش رو دادند ، اینه ( که میتونید خودتون مراجعه کنید ببینید ) :
string filter = string.Empty;
if (txtName.Text.Trim() != string.Empty)
{
filter += "name like '%" + txtName.Text.Trim() + "%' and ";
}
if (txtLastName.Text.Trim() != string.Empty)
{
filter += "lastname like '%" + txtLastName.Text.Trim() + "%' and ";
}
// check another textboxes
filter += " 1=1 ";
dt.DefaultView.RowFilter = filter;
اولا :
دقت کنید ایشون عملگر like رو برای ستونهای name و lastname استفاده کردند که از نوع رشته هستند نه int
filter += "name like '%" + txtName.Text.Trim() + "%' and ";
filter += "lastname like '%" + txtLastName.Text.Trim() + "%' and ";
من گفتم like رو نمیشه روی ستون int استفاده کرد قبلا کلی باهاش سر و کله زدم همینطوری الکی نگفتم .
شما گفتید عملگر like رو برای ستون از نوع int استفاده کردید ، من رو به شک انداختید. ( بنده مطلبی رو که مطمئن نباشم سعی میکنم نگم )
همچنین کدی هم که این دوستمون گفتند رو ببینید:
نقل قول:
نوشته شده توسط
Imenam
سلام
کد را به صورت زیر اصلاح کنید:
binding1.Filter = string.Format("Convert(KodJFaliat , 'System.String') like '%{0}%'", txJFaliat.Text);
دقت کنید ایشون با استفاده از دستور Convert ابتدا مقدار ستون رو که از نوع int بوده ، تبدیل به string کردند بعد دستور like رو استفاده کردند :
Convert(KodJFaliat , 'System.String')
الآن با این تفاصیل احتمال میدم که شما اشتباه کردید و روی ستون از نوع int نبوده ، احتمالا یه ستون رشته ای بوده که توش عدد ذخیره کردید.
ازتون خواهش میکنم بدون دقت همینطوری کسی رو متهم به منحرف کردن دیگران نکنید.
دوما :
میشه بفرمایید که این مطلبی که من توی پست بعدی گفتم ( نقل قول زیر ) ایرادش چیه:
نقل قول:
همونطوری که آقای مدیر فرمودند از کلمه کلیدی and توی رشته filter String استفاده کنید و یک یا چند شرط دیگه هم بنویسید
نقل قول: جستجو در datagridview در ستون از نوع int
نقل قول:
نوشته شده توسط
hosseines
ممنون
فقط یه سوالی اگر بخوام همزمان براساس دو فیلد جستجو کنم باید چکار کنم..؟
binding1.Filter = string.Format("Convert(KodJFaliat, 'System.String') LIKE '%" + txJFaliat.Text + "%' And XXXXX LIKE '%" + XXX.Text + "%' ");
نقل قول: جستجو در datagridview در ستون از نوع int
عرض سلام و ادب دوست خوبم ،
در جواب فرمایش اولتون لازم بود بگم دوسته من ، جناب استاد افراد با اون مثالی که زدند هم میتونید با ستون int هم کار کنید تنها تفاوتش اینه که فقط باید سینگل کوتیشن رو حذف کنید یا ورودیتون رو تبدیل به int کنید (با دستور Convert ) و اینکه فرمودید بنده احتمالا ستونم رو از نوع رشته گرفتم در جواب بگم که نه دوست من همچین کاری اصلا اصولی نیست
با این حال دوست خوبم همیشه موفق باشی
نقل قول: جستجو در datagridview در ستون از نوع int
با عرض سلام و عرض ادب به دوستان گرامی، این تاپیک دیگه خیلی داره کش پیدا میکنه موافقین؟ :) :لبخند: با اجازه همگی باید بگم که حق با دوست خوبمون mrprestige هستش برای ستونی از نوع int هم میشه از عملگر Like استفاده کرد، ولی باید دقت داشته باشیم، مقداری که میخوایم جستجو کنیم اولا حتما باید داخل سینگل کوتیشن باشه و دوما اینکه حتما باید حداقل از یک عملگر % (حالا چه ابتدا، چه انتها و چه در هر دو طرف مقدار موردنظر - که البته بسته به نوع جستجوتون هستش دیگه) استفاده کرد...
و اینکه به جای این بحثا جواب این بنده خدارو کامل بدین :تشویق::لبخند:
از مدیرای محترم هم عذر میخوام که این پست رو گذاشتم، ولی فقط به این خاطر بود که تاپیک زیاد طولانی نشه و کش پیدا نکنه :گیج::گیج:
نقل قول: جستجو در datagridview در ستون از نوع int
نقل قول:
نوشته شده توسط
mrprestige
سلام دوست من ، بنده هم این عید بزرگ رو به شما و باقی دوستان تبریک میگم . دوست عزیز این خط رو به این صورت اصلاح کن ببین جواب میده
binding1.Filter = string.Format("KodJFaliat like '%{0}%'",Convert.Toint32( txJFaliat.Text ));
Convert.Toint32 در این کد یک چیز اضافه هست چون در نهایت مقدار باید به رشته الحاق بشه و میتونید متن تکست باکس رو فقط الحاق کنید مگر اینکه نیاز داشته باشید قبل از این کد عدد بودن عبارت تکست باکس رو چک کنید.
اصولا Like برای پیدا کردن رشته ای هست که شبیه عبارت بعد از Like هست، پس می بایست مقدار عددی با Convert تبدیل به رشته و سپس مقایسه انجام بشه.
https://msdn.microsoft.com/en-us/lib...xpression.aspx
از لینک بالا برای RowFilter هم میشه استفاده کرد.
حالا اگر دوستان mrprestige و mr.sirwan تونستند بدون تبدیل و بدون خطا این کار رو انجام بدن یک توضیح همراه با کد قرار بدن.
2 ضمیمه
نقل قول: جستجو در datagridview در ستون از نوع int
مثالی که من استفاده کردم...
این دیزاین جدولم:
ضمیمه 142643
اینم کوئری و نتایجش:
ضمیمه 142644
نقل قول: جستجو در datagridview در ستون از نوع int
نقل قول:
نوشته شده توسط
mr.sirwan
بحث در مورد sql نیست. در مورد خصوصیت Filter از بایندینگ سورس هست.
نقل قول: جستجو در datagridview در ستون از نوع int
نقل قول:
نوشته شده توسط
Mahmoud.Afrad
Convert.Toint32 در این کد یک چیز اضافه هست چون در نهایت مقدار باید به رشته الحاق بشه و میتونید متن تکست باکس رو فقط الحاق کنید مگر اینکه نیاز داشته باشید قبل از این کد عدد بودن عبارت تکست باکس رو چک کنید.
اصولا Like برای پیدا کردن رشته ای هست که شبیه عبارت بعد از Like هست، پس می بایست مقدار عددی با Convert تبدیل به رشته و سپس مقایسه انجام بشه.
https://msdn.microsoft.com/en-us/lib...xpression.aspx
از لینک بالا برای RowFilter هم میشه استفاده کرد.
حالا اگر دوستان
mrprestige و
mr.sirwan تونستند بدون تبدیل و بدون خطا این کار رو انجام بدن یک توضیح همراه با کد قرار بدن.
با تشکر از استاد Mahmoud.Afrad عزیز
لینکهای زیر رو ببینید:
http://stackoverflow.com/questions/1...or-for-integer
http://stackoverflow.com/questions/2...ke-for-integer
این هم توضیح سایت مایکروسافت در مورد عملگر like :
The LIKE operator determines whether or not a character string matches a specified pattern
توی این آدرسها :
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
https://msdn.microsoft.com/en-us/lib...ffice.12).aspx
3 ضمیمه
نقل قول: جستجو در datagridview در ستون از نوع int
نقل قول:
نوشته شده توسط
Mahmoud.Afrad
Convert.Toint32 در این کد یک چیز اضافه هست چون در نهایت مقدار باید به رشته الحاق بشه و میتونید متن تکست باکس رو فقط الحاق کنید مگر اینکه نیاز داشته باشید قبل از این کد عدد بودن عبارت تکست باکس رو چک کنید.
اصولا Like برای پیدا کردن رشته ای هست که شبیه عبارت بعد از Like هست، پس می بایست مقدار عددی با Convert تبدیل به رشته و سپس مقایسه انجام بشه.
https://msdn.microsoft.com/en-us/lib...xpression.aspx
از لینک بالا برای RowFilter هم میشه استفاده کرد.
حالا اگر دوستان
mrprestige و
mr.sirwan تونستند بدون تبدیل و بدون خطا این کار رو انجام بدن یک توضیح همراه با کد قرار بدن.
عرض سلام و ادب خدمت استاد بزرگوار Mahmoud.Afrad ؛
لازمه عرض کنم خدمتتون جناب افراد بنده طبق پست شماره 4 پاسخ دوست عزیزمون جناب hosseines رو دادم و گویا مورد تایید ایشون هم بود این هم تصاویری از اجرای کد بهمراه جدول بنده
ضمیمه 142654
ضمیمه 142655
و این هم و از Design جدول
ضمیمه 142656
حالا جناب افراد شما میفرمایین که از طریق Query نباشه . ولی بنده از این کدم هم جواب گرفتم
var dataTable = dataGridView1.DataSource as DataTable;
if (dataTable != null)
dataTable.DefaultView.RowFilter = $"ID = '{Convert.ToInt32(textBox1.Text.Trim())}'";
و همینطور
BindingSource bs = new BindingSource();
bs.DataSource = dataGridView1.DataSource;
bs.Filter = $"convert(ID, 'System.String') Like '%{Convert.ToInt32(textBox1.Text.Trim())}%' ";
dataGridView1.DataSource = bs;
حالا اگه بنده قسمتی رو اشتباه کردم خیلی خوشحال میشم بفرمایین تا ایراد کار رو برطرف کنم .
نقل قول: جستجو در datagridview در ستون از نوع int
پاسخی که شما دادید اینه :
نقل قول:
نوشته شده توسط
mrprestige
_con.Open();
AD = new SqlDataAdapter("select * from TableName where KodJFaliat like ' " + Convert.ToInt32(textBox1.Text.Trim()) + "%'", _con);
_dt = new DataTable();
AD.Fill(_dt);
dataGridView1.DataSource = _dt;
_con.Close();
شما یک کوئری نوشتید و از طریق دیتا اداپتر به اس کیو ال ارجاع دادید و نتیجه رو برگردوندید.
بحث دوستی که سوال پرسیده روی فیلتر کردن دیتاگرید بود که بر می گرده به خاصیت فیلتر مربوط به باندینگ سورس دیتاگرید
در این خصوص پست شماره 5 جواب صحیح هست که اون هم ابتدا مقدار ستون رو با استفاده از دستور Convert به رشته تبدیل کردند