فیلتر کردن datagrid بوسیله text box
سلام بر همگی من یک دیتا گرید دارم دو تا فیلد نام و نام خانوادگی داره حالا میخوام بوسیله دو تکست باکس زیرش فیلترینگ انجام بدم
روی تکست باکس اول این کد رو وارد کردم
private void textBox1_TextChanged (object sender, EventArgs e)
{
System.Data.OleDb.OleDbConnection ocn = new System.Data.OleDb.OleDbConnection();
System.Data.OleDb.OleDbCommand ocm = new System.Data.OleDb.OleDbCommand();
System.Data.OleDb.OleDbDataAdapter oda = new System.Data.OleDb.OleDbDataAdapter();
DataTable dt = new DataTable();
ocn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=d:/db12.accdb";
ocm.Connection = ocn;
ocm.CommandText = "SELECT * FROM nf where family like '%" + textBox1.Text + "%'" ;
oda.SelectCommand = ocm;
oda.Fill(dt);
dg1.DataSource = dt;
dt.Dispose();
oda.Dispose();
ocm.Dispose();
ocn.Dispose();
}
و روی تکست باکس دومی
private void textBox2_TextChanged_1(object sender, EventArgs e)
{
System.Data.OleDb.OleDbConnection ocn = new System.Data.OleDb.OleDbConnection();
System.Data.OleDb.OleDbCommand ocm = new System.Data.OleDb.OleDbCommand();
System.Data.OleDb.OleDbDataAdapter oda = new System.Data.OleDb.OleDbDataAdapter();
DataTable dt = new DataTable();
ocn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=d:/db12.accdb";
ocm.Connection = ocn;
ocm.CommandText = ("SELECT * FROM nf where name like '%" + textBox2.Text + "%'") ;
oda.SelectCommand = ocm;
oda.Fill(dt);
dg1.DataSource = dt;
dt.Dispose();
oda.Dispose();
ocm.Dispose();
ocn.Dispose();
}
مشکلم این هست که من میخوام هر دو تا با هم چک بشه اینجوی هر کدوم از اینها کاره خودشونو انجام میدن میخوام مثلا تکست باکس دو با توجه به فیلترینگ تکست باکس 1 کارش رو انجام بده
با تشکر
نقل قول: فیلتر کردن datagrid بوسیله text box
سلام
طبق کد زیر عمل کن
da = new SqlDataAdapter("select * from tbl_person inner join tbl_tel" +
" on tbl_person.person_code=tbl_tel.person_code where tbl_person.person_name Like N'%" + name +
"%' and tbl_person.person_family Like N'%" + family + "%'", con);
da.Fill(ds, "view1");
این کد رو اگه تو دوتا تکست باکست کپی کنی باعث میشه که هم براساس اسم و هم براساس فامیل جستجو کنه
نقل قول: فیلتر کردن datagrid بوسیله text box
ابتدا یه متد ایجاد کنید مثل این:
private void Search()
{
System.Data.OleDb.OleDbConnection ocn = new System.Data.OleDb.OleDbConnection();
System.Data.OleDb.OleDbCommand ocm = new System.Data.OleDb.OleDbCommand();
System.Data.OleDb.OleDbDataAdapter oda = new System.Data.OleDb.OleDbDataAdapter();
DataTable dt = new DataTable();
ocn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=d:/db12.accdb";
ocm.Connection = ocn;
ocm.CommandText = ("SELECT * FROM nf where Family like '%' + textBox1.Text + "%'
and name like '%' + textBox2.Text + "%'" ) ;
oda.SelectCommand = ocm;
oda.Fill(dt);
dg1.DataSource = dt;
dt.Dispose();
oda.Dispose();
ocm.Dispose();
ocn.Dispose();
}
و تو TextBox ها متد رو فراخوانی کنید.
Search();
نقل قول: فیلتر کردن datagrid بوسیله text box
درسته ولی قبل از غلامت % یه علامت N بزار واسه حروف فارسی که ایراد نگیره
نقل قول: فیلتر کردن datagrid بوسیله text box
لازم نيست دستور SQL بنويسي با استفاده از خود ديتا تيبل كه اطلاعات تيبلت توش هست ميتوني اينكارو انجام بدي. بايد توجه كني كه رشته جستجو بر اساس پر يا خالي بودن تكست باكسها تغيير ميكنه مثلا وقتي يكي خالي باشه ديگه نبايد AND يا OR بذاري . متد زير ميتوني بدون استفاده از كانكشن ارتباط با SQL جستجو كني:
Datatable1.DefaulyView.Rowfilter = "YourFiled = '" + TxtSearch.text +"'"
نقل قول: فیلتر کردن datagrid بوسیله text box
لازم نیست برای وارد کردن هر کاراکتر از دیتابیس Fetch کنید بهترین راه فیلتر کردن اطلاعات داخل DataTableه از همون روشی که ali_habibi1384 فرمودن می تونید استفاده کنید.
نقل قول: فیلتر کردن datagrid بوسیله text box
نقل قول:
نوشته شده توسط
ali_habibi1384
لازم نيست دستور SQL بنويسي با استفاده از خود ديتا تيبل كه اطلاعات تيبلت توش هست ميتوني اينكارو انجام بدي. بايد توجه كني كه رشته جستجو بر اساس پر يا خالي بودن تكست باكسها تغيير ميكنه مثلا وقتي يكي خالي باشه ديگه نبايد AND يا OR بذاري . متد زير ميتوني بدون استفاده از كانكشن ارتباط با SQL جستجو كني:
Datatable1.DefaulyView.Rowfilter = "YourFiled = '" + TxtSearch.text +"'"
سلام عرض شد خدمت شما و ممنونم از لطفت دوست من
من با دستوری که شما فرمودید عمل فیلترینگ رو انجام دادم اما دو تا مشکل
یک اینکه برنامه خطای زیر را دارد
Error 1 'System.Windows.Forms.DataGridView' does not contain a definition for 'DefaulyView' and no extension method 'DefaulyView' accepting a first argument of type 'System.Windows.Forms.DataGridView' could be found (are you missing a using directive or an assembly reference?) E:\C# project\daneshjoo11\daneshjoo11\Form1.cs 135 17 daneshjoo11
دوم اینکه من کد شما رو به این شکل نوشتم
dg1.DefaulyView.Rowfilter = "name = '" + textBox1.Text + "' and family = '" + textBox2.Text + "'";
و در هر دو تکست باکس کپی کردم اما باز هم در فیترینگ هر تکست باکس بدون در نظر گرفتن تکست باکس دیگر کاره خودشو انجام میده
نقل قول: فیلتر کردن datagrid بوسیله text box
نقل قول:
نوشته شده توسط
hesabres
سلام عرض شد خدمت شما و ممنونم از لطفت دوست من
من با دستوری که شما فرمودید عمل فیلترینگ رو انجام دادم اما دو تا مشکل
یک اینکه برنامه خطای زیر را دارد
Error 1 'System.Windows.Forms.DataGridView' does not contain a definition for 'DefaulyView' and no extension method 'DefaulyView' accepting a first argument of type 'System.Windows.Forms.DataGridView' could be found (are you missing a using directive or an assembly reference?) E:\C# project\daneshjoo11\daneshjoo11\Form1.cs 135 17 daneshjoo11
دوم اینکه من کد شما رو به این شکل نوشتم
dg1.DefaulyView.Rowfilter = "name = '" + textBox1.Text + "' and family = '" + textBox2.Text + "'";
و در هر دو تکست باکس کپی کردم اما باز هم در فیترینگ هر تکست باکس بدون در نظر گرفتن تکست باکس دیگر کاره خودشو انجام میده
خوب شما الان فکر نکن اطلاعاتت کمه فقط یه اسم یا یه فامیل داری
بعدا که اطلاعاتت بیشتر شد همین بدردت میخوره
نقل قول: فیلتر کردن datagrid بوسیله text box
سلام دوستان
من این کد رو نوشتم و مشکلم با یاری شما دوستان مرتفع شد
dt.DefaultView.RowFilter = "family like '%" + textBox1.Text + "%' and name like '%" + textBox2.Text + "%' ";
dg1.DataSource = dt;
الان مشکلم در حرف " ی " هست از حرف N هم که فرمودید استفاده کردم ولی برنامه خطا گرفت میشه این کد رو با حرف N اصلاح بفرمائید ببینم من کجا اشتباه میکنم من N رو اینگونه بکار بردم برنامه ارور گرفت
dt.DefaultView.RowFilter = "family like N'%" + textBox1.Text + "%' and name like '%" + textBox2.Text + "%' ";
dg1.DataSource = dt;
نقل قول: فیلتر کردن datagrid بوسیله text box
نبود کسی از دوستان کمکی کنه ؟
نقل قول: فیلتر کردن datagrid بوسیله text box
سلام عزیزجان
N رو باید کاملا قبل از کاراکتر قرار بدهید.