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

نام تاپیک: ایجاد فیلتر برای ستونی از نوع int در BindingSource

  1. #1

    Question ایجاد فیلتر برای ستونی از نوع 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);
    }
    آخرین ویرایش به وسیله Mahmoud.Afrad : شنبه 27 شهریور 1395 در 20:24 عصر

  2. #2
    کاربر دائمی آواتار mrprestige
    تاریخ عضویت
    مرداد 1393
    محل زندگی
    کرج
    پست
    646

    نقل قول: جستجو در دیتاگرید در ستون از نوع int

    سلام دوست من ، بنده هم این عید بزرگ رو به شما و باقی دوستان تبریک میگم . دوست عزیز این خط رو به این صورت اصلاح کن ببین جواب میده

    binding1.Filter = string.Format("KodJFaliat like '%{0}%'",Convert.Toint32( txJFaliat.Text ));

  3. #3

    نقل قول: جستجو در دیتاگرید در ستون از نوع int

    نقل قول نوشته شده توسط mrprestige مشاهده تاپیک
    سلام دوست من ، بنده هم این عید بزرگ رو به شما و باقی دوستان تبریک میگم . دوست عزیز این خط رو به این صورت اصلاح کن ببین جواب میده

    binding1.Filter = string.Format("KodJFaliat like '%{0}%'",Convert.Toint32( txJFaliat.Text ));
    ممنون دوست عزیز
    جواب نداد..

  4. #4
    کاربر دائمی آواتار mrprestige
    تاریخ عضویت
    مرداد 1393
    محل زندگی
    کرج
    پست
    646

    نقل قول: جستجو در 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();


    باز اینو خودت میتونی بهینه تر بنویسی الان چون وقت نداشتم (با عرض معذرت) فقط خواستم بدونی اصل کد چطوریه .

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

  5. #5
    کاربر تازه وارد آواتار Imenam
    تاریخ عضویت
    خرداد 1389
    محل زندگی
    اصفهان
    پست
    54

    نقل قول: جستجو در datagridview در ستون از نوع int

    سلام
    کد را به صورت زیر اصلاح کنید:

    binding1.Filter = string.Format("Convert(KodJFaliat , 'System.String') like '%{0}%'", txJFaliat.Text);

  6. #6
    کاربر دائمی آواتار rahmatipoor
    تاریخ عضویت
    شهریور 1392
    محل زندگی
    ---
    پست
    418

    نقل قول: جستجو در datagridview در ستون از نوع int

    دوست عزیز چون ستونت از نوع int هست نمیتونی از عملگر like استفاده کنی ، باید از عملگر = استفاده کنی

  7. #7
    کاربر دائمی آواتار mrprestige
    تاریخ عضویت
    مرداد 1393
    محل زندگی
    کرج
    پست
    646

    نقل قول: جستجو در datagridview در ستون از نوع int

    نقل قول نوشته شده توسط rahmatipoor مشاهده تاپیک
    دوست عزیز چون ستونت از نوع int هست نمیتونی از عملگر like استفاده کنی ، باید از عملگر = استفاده کنی
    سلام دوست من وقتت بخیر ، دوست عزیز میتونم بپرسم رو چه استنباطی این رو می فرمایید ؟؟ خب الان من از Like استفاده کردم و جواب هم داده ستون هم از نوع int بوده .

  8. #8

    نقل قول: جستجو در datagridview در ستون از نوع int

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

  9. #9

    نقل قول: جستجو در datagridview در ستون از نوع int

    نقل قول نوشته شده توسط hosseines مشاهده تاپیک
    ممنون
    فقط یه سوالی اگر بخوام همزمان براساس دو فیلد جستجو کنم باید چکار کنم..؟
    لینک زیر توضیح دادم
    https://barnamenevis.org/showthread.p...=1#post1658419

  10. #10
    کاربر دائمی آواتار rahmatipoor
    تاریخ عضویت
    شهریور 1392
    محل زندگی
    ---
    پست
    418

    نقل قول: جستجو در datagridview در ستون از نوع int

    نقل قول نوشته شده توسط mrprestige مشاهده تاپیک
    سلام دوست من وقتت بخیر ، دوست عزیز میتونم بپرسم رو چه استنباطی این رو می فرمایید ؟؟ خب الان من از Like استفاده کردم و جواب هم داده ستون هم از نوع int بوده .
    من نتونستم ولی شما میگید تونستید مجددا بررسی میکنم.

    نقل قول نوشته شده توسط hosseines مشاهده تاپیک
    ممنون
    فقط یه سوالی اگر بخوام همزمان براساس دو فیلد جستجو کنم باید چکار کنم..؟
    همونطوری که آقای مدیر فرمودند از کلمه کلیدی and توی رشته filter String استفاده کنید و یک یا چند شرط دیگه هم بنویسید
    آخرین ویرایش به وسیله Mahmoud.Afrad : جمعه 26 شهریور 1395 در 22:50 عصر

  11. #11
    کاربر دائمی آواتار mrprestige
    تاریخ عضویت
    مرداد 1393
    محل زندگی
    کرج
    پست
    646

    نقل قول: جستجو در datagridview در ستون از نوع int

    نقل قول نوشته شده توسط rahmatipoor مشاهده تاپیک
    همونطوری که آقای مدیر فرمودند از کلمه کلیدی and توی رشته filter String استفاده کنید و یک یا چند شرط دیگه هم بنویسید
    دوست من لطفا در ارسال جواب دقت کنید شما که الان فرمودید با Like نمیشه و باید از عملگر = استفاده کرد . خب جناب استاد Mahmoud.Afrad هم که از Like استفاده کردند (اون هم به چند روش) دوست من . جوابتون دوپهلو و ناآگاهنه بود اینطور جواب ها باعث میشه اون بنده خدا که سوال مطرح کرده توی دریافت جوابش دچار مشکل بشه . امیدوارم از انتقادم ناراحت نشید دوست من . چون مثلا منی که مبتدی ام و اینجا ( یا کلا در این سایت ) سوالم رو مطرح میکنم میخوام که به یک جواب اصولی برسم .

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

  12. #12
    کاربر دائمی آواتار rahmatipoor
    تاریخ عضویت
    شهریور 1392
    محل زندگی
    ---
    پست
    418

    نقل قول: جستجو در 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 استفاده کنید و یک یا چند شرط دیگه هم بنویسید
    آخرین ویرایش به وسیله rahmatipoor : شنبه 27 شهریور 1395 در 18:03 عصر

  13. #13
    کاربر تازه وارد آواتار Imenam
    تاریخ عضویت
    خرداد 1389
    محل زندگی
    اصفهان
    پست
    54

    نقل قول: جستجو در datagridview در ستون از نوع int

    نقل قول نوشته شده توسط hosseines مشاهده تاپیک
    ممنون
    فقط یه سوالی اگر بخوام همزمان براساس دو فیلد جستجو کنم باید چکار کنم..؟
     binding1.Filter = string.Format("Convert(KodJFaliat, 'System.String') LIKE '%" + txJFaliat.Text + "%' And XXXXX LIKE '%" + XXX.Text + "%' ");

  14. #14
    کاربر دائمی آواتار mrprestige
    تاریخ عضویت
    مرداد 1393
    محل زندگی
    کرج
    پست
    646

    نقل قول: جستجو در datagridview در ستون از نوع int

    عرض سلام و ادب دوست خوبم ،
    در جواب فرمایش اولتون لازم بود بگم دوسته من ، جناب استاد افراد با اون مثالی که زدند هم میتونید با ستون int هم کار کنید تنها تفاوتش اینه که فقط باید سینگل کوتیشن رو حذف کنید یا ورودیتون رو تبدیل به int کنید (با دستور Convert ) و اینکه فرمودید بنده احتمالا ستونم رو از نوع رشته گرفتم در جواب بگم که نه دوست من همچین کاری اصلا اصولی نیست

    با این حال دوست خوبم همیشه موفق باشی
    آخرین ویرایش به وسیله Mahmoud.Afrad : جمعه 26 شهریور 1395 در 22:39 عصر دلیل: از بحث های حاشیه ای بپرهیزید.

  15. #15

    نقل قول: جستجو در datagridview در ستون از نوع int

    با عرض سلام و عرض ادب به دوستان گرامی، این تاپیک دیگه خیلی داره کش پیدا میکنه موافقین؟ :) با اجازه همگی باید بگم که حق با دوست خوبمون mrprestige هستش برای ستونی از نوع int هم میشه از عملگر Like استفاده کرد، ولی باید دقت داشته باشیم، مقداری که میخوایم جستجو کنیم اولا حتما باید داخل سینگل کوتیشن باشه و دوما اینکه حتما باید حداقل از یک عملگر % (حالا چه ابتدا، چه انتها و چه در هر دو طرف مقدار موردنظر - که البته بسته به نوع جستجوتون هستش دیگه) استفاده کرد...
    و اینکه به جای این بحثا جواب این بنده خدارو کامل بدین

    از مدیرای محترم هم عذر میخوام که این پست رو گذاشتم، ولی فقط به این خاطر بود که تاپیک زیاد طولانی نشه و کش پیدا نکنه

  16. #16

    نقل قول: جستجو در 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 تونستند بدون تبدیل و بدون خطا این کار رو انجام بدن یک توضیح همراه با کد قرار بدن.

  17. #17

    نقل قول: جستجو در datagridview در ستون از نوع int

    مثالی که من استفاده کردم...

    این دیزاین جدولم:
    1.png

    اینم کوئری و نتایجش:
    2.png

  18. #18

    نقل قول: جستجو در datagridview در ستون از نوع int

    نقل قول نوشته شده توسط mr.sirwan مشاهده تاپیک
    مثالی که من استفاده کردم...

    این دیزاین جدولم:
    1.png

    اینم کوئری و نتایجش:
    2.png
    بحث در مورد sql نیست. در مورد خصوصیت Filter از بایندینگ سورس هست.

  19. #19
    کاربر دائمی آواتار rahmatipoor
    تاریخ عضویت
    شهریور 1392
    محل زندگی
    ---
    پست
    418

    نقل قول: جستجو در 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

  20. #20
    کاربر دائمی آواتار mrprestige
    تاریخ عضویت
    مرداد 1393
    محل زندگی
    کرج
    پست
    646

    نقل قول: جستجو در 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 رو دادم و گویا مورد تایید ایشون هم بود این هم تصاویری از اجرای کد بهمراه جدول بنده
    1.JPG


    2.JPG

    و این هم و از Design جدول

    3.JPG

    حالا جناب افراد شما میفرمایین که از طریق 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;


    حالا اگه بنده قسمتی رو اشتباه کردم خیلی خوشحال میشم بفرمایین تا ایراد کار رو برطرف کنم .
    آخرین ویرایش به وسیله mrprestige : شنبه 27 شهریور 1395 در 21:03 عصر

  21. #21
    کاربر دائمی آواتار rahmatipoor
    تاریخ عضویت
    شهریور 1392
    محل زندگی
    ---
    پست
    418

    نقل قول: جستجو در 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 به رشته تبدیل کردند

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

  1. سوال: اضافه کردن فیلتر contain بر روی ستونی از جنس int در گرید Telerik
    نوشته شده توسط samir_jafari64 در بخش C#‎‎
    پاسخ: 0
    آخرین پست: یک شنبه 27 بهمن 1392, 09:03 صبح
  2. سوال: نحوه ایجاد ستونی از نوع hyperlink در dbgrideh
    نوشته شده توسط hamid_14 در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 3
    آخرین پست: دوشنبه 04 آذر 1392, 18:16 عصر
  3. سوال: کدنویسی برای ستونی از نوع button در گریدویو؟
    نوشته شده توسط طبیب دل در بخش ASP.NET Web Forms
    پاسخ: 7
    آخرین پست: یک شنبه 03 شهریور 1392, 12:05 عصر
  4. grid و ستونی از نوع int که نباید حرف بگیره
    نوشته شده توسط ir_ali_s در بخش VB.NET
    پاسخ: 3
    آخرین پست: شنبه 19 اسفند 1385, 21:01 عصر
  5. دادن مقدار null به یک فیلد از نوع int در جدول
    نوشته شده توسط saffari2005 در بخش SQL Server
    پاسخ: 1
    آخرین پست: دوشنبه 02 خرداد 1384, 09:34 صبح

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

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