PDA

View Full Version : سوال: جستجو بر روی رکوردهای datagridview



hahaie
چهارشنبه 02 دی 1394, 16:07 عصر
سلام
یه گرید ویو روی فرم دارم که با استفاده از ویویی که توی sql نوشته شده پر میشه.در واقع وقتی فرم load میشه تمام رکوردهای جدول رو نشون میده.
حالا میخوام یه سرچ برا فرمم بذارم که براساس فیلدهای گرید ویو رکوردهایی رو سرچ کنه.
نمیشه روی همین گرید ویو سرچ زد که نخوام برم روی جدول سرچ بزنم؟

ghasem110deh
چهارشنبه 02 دی 1394, 18:42 عصر
سلام
این رو امتحان کنید :

private int searchIndex = -1;
private void button3_Click(object sender, EventArgs e)
{
button3.Text = "انتخاب بعدی";
try
{
for (int i = 0; i < dataGridView2.Rows.Count; i++)
{
searchIndex = (searchIndex + 1) % dataGridView2.Rows.Count;
DataGridViewRow row = dataGridView2.Rows[searchIndex];
if (row.Cells["Product"].Value == null)
{
continue;
}
// پیدا کردن کلماتی که با حروف جستجو شده شروع یا تمام می شوند
if (row.Cells["Product"].Value.ToString().Trim().StartsWith(textBox2.Text) || row.Cells["Product"].Value.ToString().Trim().Contains(textBox2.Text))
{
ListViewItem lvi = new ListViewItem(row.Cells["Product"].Value.ToString()); // ریختن در لیست ویو
lvi.SubItems.Add(row.Cells["Product"].Value.ToString());
listView2.Items.Add(lvi);
dataGridView2.CurrentCell = row.Cells["Product"];
dataGridView2.FirstDisplayedScrollingRowIndex = dataGridView2.Rows[row.Index].Index;
row = dataGridView2.Rows[i];
return;
}
}
}
catch { }
}

کد بالا ، کلمه یا حرف جستجو شده در ستون "Product" دیتاگرید ویو پیدا میکنه و سطر انتخاب میشه (های لایت میشه) و با کلیک بعدی ... سطر بعد که کلمه مشابه رو داره انتخاب و های لایت میشه
و هر بار هم اطلاعات سطر رو توی یه لیست ویو اضافه میکنه !

من دارم ازش بصورت جستجوی اکسل استفاده میکنم (تقریبا) همه مقادیر رو که مشابه کلمه جستجو شده هستن رو یکباره توی یه فرم جدید (داخل لیست ویو با تعداد یافت شده) نمایش میده
که میشه نتیجه جستجو رو چاپ هم کنم !

hahaie
پنج شنبه 03 دی 1394, 12:37 عصر
ممنون دوست عزیز خیلی زحمت کشیدی.
ولی من میخوام نتایج جستجو که رکوردهایی هستند داخل همون گرید ویو نشون داده بشه و مثلا یک دکمه نمایش همه داشته باشم که بازگرده به حالت اول.

vb341
پنج شنبه 03 دی 1394, 19:11 عصر
با استفاده از دستور like در یک دستور sql میتونی با قرار دادن چند textbox بر روی ستونهای گرید و با چهار خط کد یک دستور ترکیبی بنویسی که تمام رکوردها رو جستجو کنه
الان نمونه کد همرام نیست ولی براتون قرار میدم

hahaie
جمعه 04 دی 1394, 14:25 عصر
فکر کنم بشه روی همون ویو که دیتاسورس هستش سرچ بزنم اینطور حداقل از عنوان فیلدها که توی ویو فارسی هستش میتونم باز استفاده کنم.میشه؟

cmsdqq2
جمعه 04 دی 1394, 16:02 عصر
در این مورد به زبان سی شارپ و ویبی بشدت پروژه ها و نمونه کد ها و سورسها موجوده

پروژه های درج، حذف، ویرایش، جستجو، جستجوی ریز (با فیلتر) و ...

lucky_luke_m
جمعه 17 اردیبهشت 1395, 10:08 صبح
سلام دوست عزیز این کد بر طبق ستون id جدول سرچ میکنه و تو datagredview همهی اون سطرو نمایش میده
SqlCommand cmd = con.CreateCommand();
cmd.CommandText = "SELECT * FROM student WHERE ID=@id";
cmd.Parameters.Clear();
SqlParameter id = new SqlParameter();
id.ParameterName = "@id";
id.SqlDbType = SqlDbType.Int;
id.IsNullable = false;
id.Value = textBox4.Text;
cmd.Parameters.Add(id);
try
{
DataTable DT = new DataTable();
con.Open();
IDataReader dr = cmd.ExecuteReader();
DT.Load(dr);
dataGridView1.DataSource = DT;
con.Close();
ClearData();


}
catch (SqlException ex)
{

throw ex;
}
catch (Exception ex)
{
throw ex;
}
}