PDA

View Full Version : جستجو در بانک بر اساس دو textbox



vapa_71
شنبه 07 بهمن 1391, 20:20 عصر
سلام

من این کد رو دارم که تمام جدول رو توی دیتاگرید نمایش میده

SqlConnection con = new SqlConnection();
con.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\LMS_DB.mdf;Integrated Security=True;User Instance=True";
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "select * from test";
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
con.Open();
da.Fill(dt);
dataGridView1.DataSource = dt;
con.Close();
حالا میخوام یک دکمه بذارم که بر اساس دو تا تکس باکس جستجو انجام بده
که textbox1 داده عددی میگیره (مثل شماره پرسنلی) و textbox2 داده رشته ای (مثل فامیلی)
و اولویت با textbox1 هست یعنی اگه textbox2 خالی بود اشکال نداشته باشه اما اگه مقدار داشت هر دو تا textbox جستجو بشن

ممنون

khokhan
شنبه 07 بهمن 1391, 21:23 عصر
سلام

حالا این باتنه حتما بایستی باشه ؟

khokhan
شنبه 07 بهمن 1391, 21:27 عصر
private void textBox1_TextChanged(object sender, EventArgs e)
{
try
{
((DataTable)dataGridView1.DataSource).DefaultView. RowFilter = "like '%" + textBox1.Text.Trim() + "%' ";
}
catch (Exception) { }

}

vapa_71
شنبه 07 بهمن 1391, 21:29 عصر
من با دکمه لازم دارم کار کنه :ناراحت:

alias136790
شنبه 07 بهمن 1391, 21:51 عصر
البته اگه بخوای بدون دکمه هم میشه با فقط کلیک روی اینتر:

private void TextBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Return)
SearchFunction();\\تابع جستجوی شما تو دیتابیس
}

khokhan
شنبه 07 بهمن 1391, 21:56 عصر
بفرما این با یک تکس باکس و باتن هستش خودت می تونی تکمیلش کنی


private void button1_Click(object sender, EventArgs e)//button click event
{
DataTable dt= new DataTable;

SqlDataAdapter adpt = new SqlDataAdapter("Select <field> from <table> where <field> like '" + textbox.Text + "%'",connectionobject);
adpt.Fill(dt);//datatable to catch the fields from the database
datagridview.DataSource = dt;
}

vapa_71
شنبه 07 بهمن 1391, 22:40 عصر
مرسی
این کد واسه جستجوی عددی هست یا کاراکتزی؟
من میخوام یک دکمه بذارم که بر اساس دو تا تکس باکس جستجو انجام بده
که textbox1 داده عددی میگیره (مثل شماره پرسنلی) و textbox2 داده رشته ای (مثل فامیلی)
و اولویت با textbox1 هست یعنی اگه textbox2 خالی بود اشکال نداشته باشه اما اگه مقدار داشت هر دو تا textbox جستجو بشن

vapa_71
شنبه 07 بهمن 1391, 22:55 عصر
واسه تکس باکس عددی جواب میده اما واسه تکس باکس کراکتری چی ؟ و اگه خالی باشه تاثیر نداشته باشه ؟

georgiaro
یک شنبه 08 بهمن 1391, 09:32 صبح
زمانی که از like '%something%' استفاده میکنی، اگر something خالی باشه هیچ فیلتری انجام نمیشه

es.es.es
یک شنبه 08 بهمن 1391, 16:51 عصر
من با linq نوشتم حالا چطوری باید اینکارو بکنم

vapa_71
یک شنبه 08 بهمن 1391, 17:30 عصر
اگه دیتا تیبل لازم نداری از اینا استفاده کن من نیاز داشتم دیتاتیبل رو پر کنم

بر اساس فیلد عددی

private void button11_Click(object sender, EventArgs e)
{
var db = new DCLMSDataContext();
if (maskedTextBox2.Text == "")
dataGridView2.DataSource = db.breeds;
else
dataGridView2.DataSource = db.breeds.Where(item => item.animalcode == Convert.ToInt32(maskedTextBox2.Text));
}


بر اساس فیلد متنی

private void textBox5_TextChanged(object sender, EventArgs e)
{
var db = new DCLMSDataContext();
if (textBox5.Text == "")
dataGridView1.DataSource = db.normalvalues;
else
dataGridView1.DataSource = db.normalvalues.Where(c => c.testgroup.Substring(0, textBox5.Text.Length) == textBox5.Text).Select(c => c);
}

واسه دو تا هم میتونی ترکیبشون کنی

samadblaj
یک شنبه 08 بهمن 1391, 21:18 عصر
من با linq نوشتم حالا چطوری باید اینکارو بکنم

با linq خیلی ساده تره توی قسمت "نمونه برنامه های کوچیک " یه مثال از یکی از دوستان هست که خیلی میتونه کمکتون کنه....

es.es.es
یک شنبه 08 بهمن 1391, 21:50 عصر
میشه لطفا لینک بدید