PDA

View Full Version : جستجو در DataGridView



iran2008
سه شنبه 06 تیر 1391, 16:41 عصر
سلام به همه
سوالی دارم و خیلی به جوابش نیاز دارم
ممنون میشم که کمک میکنید

من کد جستجو کردن در دیتاگرید رو میخوام .http://up98.org/upload/server1/02/j/gvzei2kwlt2ulm0meol.jpg


مثلا در یکی از ستون ها ( بفرض ستون دوم که name هست ) ، تعدادی نام نوشته ام . مثل Modem .
حال میخوام وقتی دکمه جستجو رو میزنم ، این جدول فقط نام های Modem رو نشون بده .

ممنون میشم کمک کنید .
خیلی نیاز دارم
مرسی از همه

Y_Safaiee
سه شنبه 06 تیر 1391, 17:06 عصر
با سلام خدمت شما دوست گرامی

آیا شما روی فرم BindingSource دارید و به صورت درگی اطلاعات روی فرم میزارید؟
اگه جواب بله است فقط این کد رو بنویسین
1.



private void textBox1_TextChanged(object sender, EventArgs e)
{
table1BindingSource.Filter = "name like '" + textBox1.Text + "%' or family like '" + textBox1.Text + "%'";

}


من توسط Or گفتم که یا فامیلش برابر با تکس من باشه یا اسمش

اگر جوابتون نه هست یه سمپل کد براتون نوشتم
2.


using System.Data.SqlClient;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
SqlConnection cnn = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirecto ry|\\Database1.mdf;Integrated Security=True;User Instance=True");
SqlCommand cmd = new SqlCommand();
SqlDataAdapter da = new SqlDataAdapter();
DataTable dt = new DataTable();
BindingSource bind = new BindingSource();

public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
cnn.Open();
cmd.Connection = cnn;
cmd.CommandText = "select * from table1";
cmd.ExecuteNonQuery();
da.SelectCommand = cmd;
da.Fill(dt);
dataGridView1.DataSource = dt;
bind.DataSource = dt;
}

private void textBox1_TextChanged(object sender, EventArgs e)
{

bind.Filter = "name like '" + textBox1.Text + "%'";
}
}
}



موفق باشی
بایت بایت

iran2008
سه شنبه 06 تیر 1391, 17:38 عصر
از کد بالا زیاد چیزی نفهمیدم. ممنون میشم با کد خودم بهم بگید . مرسی
این کد منه :


System.Data.SqlClient.SqlConnection con;
System.Data.SqlClient.SqlDataAdapter da;
DataSet ds1;

private void btnLoadList_Click(object sender, EventArgs e)
{
con = new System.Data.SqlClient.SqlConnection();

ds1 = new DataSet();

con.ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\dbSQL\\P C Shop.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";

string sql = "SELECT * FROM List";
da = new System.Data.SqlClient.SqlDataAdapter(sql, con);

con.Open();

da.Fill(ds1,"PC Shop");

con.Close();
con.Dispose();

dgvMain.DataSource = ds1;
dgvMain.DataMember = "PC Shop";

}

samadblaj
سه شنبه 06 تیر 1391, 17:58 عصر
سلام این روش بدردت نمیخوره؟ اگه نحوه استفاده رو ندونستی بگو تا پروژه پیوست کنم.



dicDataContext db = new dicDataContext();
try
{
var proc =
from p in db.students
where p.name == textBox1.Text
select p;
dataGridView1.DataSource = proc;
}
catch { }

Y_Safaiee
سه شنبه 06 تیر 1391, 18:40 عصر
با سلام مجدد

خدمت شما فقط :

1.Using یادت نره
2.فقط لازمه دیتابیسو نامشو دیتابیس خودت کنی و نام جدولام نام جدول خودت کنی تو فیلتر کردنم فیلدی که میخوای فیلتر شه رو بنویسی.



using System.Data.SqlClient;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
DataSet ds = new DataSet();
SqlDataAdapter da;
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirecto ry|\\Database1.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
con.Open();
string sql= "select * from table1";
da = new SqlDataAdapter(sql, con);
con.Close();
da.Fill(ds,"table1");
dataGridView1.DataSource = ds.Tables["table1"];
}

private void textBox1_TextChanged(object sender, EventArgs e)
{
ds.Tables[0].DefaultView.RowFilter = "name like '" + textBox1.Text + "%'";
}
}
}


موفق باشی
بایت بایت

Farshid007
سه شنبه 06 تیر 1391, 19:00 عصر
خوب دوست عزیز خودت که 99% راه رو پیمودی

خوب تو کد های خودت اونجای که SELECT می کنی یه Where بنداز درست حل میشه دیگه
یعنی
واسه سرچ هم همین کارو می کنن اما تو خط SQL باید شرط بندازی مثل این:
Select * FROM List Where name Like'%modem%'

name نام ستون هست
و با like و % هر چیزی که تو اسمش modem هست رو پیدا می کنه
اگر هم می خوایی عین عبارت modem رو پیدا کنه باید به جای اون دوتا = بزاری
اما معمولا برای سرچ like می زنند

samadblaj
سه شنبه 06 تیر 1391, 19:29 عصر
دوباره سوال رو مرور کردم جور دیگه ای متوجه شدم ببین همونجور که توی عکس ضمیمه مشاهده میکنی کوری توی دیتا گرید میگرده و کلمه مورد نظر رو پیدا میکنه و بعد ستون درخواستی رو نمایش میده.


dicDataContext db = newdicDataContext();
try
{
var proc =
from p in db.students
where p.name == textBox1.Text
selectnew
{
p.family
};
dataGridView1.DataSource = proc;
}
catch { }

ali رو پیدا کرده و بعد یک ستون رو به صورت یکتا نمایش میده (یک datagridview بیشتر نیاز نداره)