PDA

View Full Version : مشکل جستجو در datagrid و textbox



IsaacZhr
شنبه 17 تیر 1391, 12:10 عصر
سلام
خسته نباشید

من میخوام یه سرچی بنویسم که هر حرفی تو تکس باکس بنویسم تو detagrideview کلماتی رو که با اون حرف شروع میشن رو فقط به ما نشون بده ومثلا ح رو وارد کردیم اسامی حسن حسین حمید رو فقط نشون بده.

من هرچی سرچ زدم چیزایی پیدا کردم ولی نتونستم تو برنامه ام استفاده کنم اگه یه سورسی باشه یه شبهه کدی باشه متشکر میشم کمکم کنید.

اگه شبه کد نوشتین بگید کجا بنویسمش مثلا textbox -change
بعد اگر شی دیگه مثل datasourse باید تو فرم بزارم بگید لطفا
چون زیاد حرفه ای نیستم.

مرسی

veniz2008
شنبه 17 تیر 1391, 12:35 عصر
سلام، فقط یه textbox و یک گریدویو روی فرم بذارید. در رویداد TextChanged مربوط به textbox کد زیر رو قرار بدید:

private void textBox1_TextChanged(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection("Data Source=(local);Initial Catalog=testgrid;Integrated Security=True");
con.Open();
SqlDataAdapter da = new SqlDataAdapter("select * from student where name like '" + textBox1.Text +"%'", con);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
con.Close();
}
موفق باشید.

sobijoon
شنبه 17 تیر 1391, 16:23 عصر
private void textBox4_TextChanged(object sender, EventArgs e)
{
if (textBox4.Text != String.Empty)

dw.RowFilter = "ln like '%" + textBox4.Text.Trim() + "%'";
else

dw.RowFilter = "";
}
dwیک شی از dataviewهستش که من ساختم
بصورت زیر هم باید به dataset وصلش کنی
dw3 = new DataView();
dw3.Table = ds3.Tables["Persons"];

IsaacZhr
شنبه 17 تیر 1391, 20:02 عصر
دستتون درد نکنه بابته کمکتون

ولی یه مشکل برا من ایجاد شد من قبلان در قسمت datagtidview-cellclick اینو نوشته بودم ( من بعضی از پرانتزها و وسرگولا رو برا بهتر دیدن کد پاک اینجا کردم)

void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e
}
if (e.RowIndex < 0 || e.ColumnIndex < 0
return
int txt3 = (int)dataGridView1.Rows[e.RowIndex].Cells["ID"].Value
textBox5.Text = txt3.ToString
string txt1 = (string)dataGridView1.Rows[e.RowIndex].Cells["Name"].Value
textBox1.Text=txt1
string txt2 = (string)dataGridView1.Rows[e.RowIndex].Cells["Family"].Value
textBox2.Text = txt2

و وقتی کد شمارو اضافه کردم و روی دیتا گرید ویو کلیک کنم
سر txt2 که مربوط به family هستش خطای
( ArgumentOutOfRangeException Was Unhandled(index was out of range. must benon-negative and less than the sizeof the collection

رو صادر میکنه مشکل چه چیزی میباشد؟

مرسی

IsaacZhr
شنبه 17 تیر 1391, 20:04 عصر
این قسمت سوالم مربوط به کد اقای mohammaddou میباشد و همچنین با تشکر از اقای sobijoon

IsaacZhr
شنبه 17 تیر 1391, 20:05 عصر
سلام، فقط یه textbox و یک گریدویو روی فرم بذارید. در رویداد TextChanged مربوط به textbox کد زیر رو قرار بدید:

private void textBox1_TextChanged(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection("Data Source=(local);Initial Catalog=testgrid;Integrated Security=True");
con.Open();
SqlDataAdapter da = new SqlDataAdapter("select * from student where name like '" + textBox1.Text +"%'", con);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
con.Close();
}
موفق باشید.

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

ولی یه مشکل برا من ایجاد شد من قبلان در قسمت datagtidview-cellclick اینو نوشته بودم ( من بعضی از پرانتزها و وسرگولا رو برا بهتر دیدن کد پاک اینجا کردم)

void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e
}
if (e.RowIndex < 0 || e.ColumnIndex < 0
return
int txt3 = (int)dataGridView1.Rows[e.RowIndex].Cells["ID"].Value
textBox5.Text = txt3.ToString
string txt1 = (string)dataGridView1.Rows[e.RowIndex].Cells["Name"].Value
textBox1.Text=txt1
string txt2 = (string)dataGridView1.Rows[e.RowIndex].Cells["Family"].Value
textBox2.Text = txt2

و وقتی کد شمارو اضافه کردم و روی دیتا گرید ویو کلیک کنم
سر txt2 که مربوط به family هستش خطای
( ArgumentOutOfRangeException Was Unhandled(index was out of range. must benon-negative and less than the sizeof the collection

رو صادر میکنه مشکل چه چیزی میباشد؟

مرسی

veniz2008
شنبه 17 تیر 1391, 21:09 عصر
ببینید سوال شما اولش یه چیز دیگه بود والان یه چیز دیگه ای میگید!!(این خطا مربوط به شماره سطر و ستون هستش،مثلا شم 3 تا سطر داری ولی میخوای رو سر چهارم عملیاتی رو انجام بدی،در اینصورت برنامه خطای خارج از محدوده رو میده). شما گفته بودید که میخواید داخل textbox هر چیزی رو تایپ کردید کلماتی که با اون حرفها شروع میشن رو درون گرید ببینید. من کد کامل رو براتون گذاشتم به چیز دیگه ای نیاز ندارید. کدهای اضافی رو پاک کنید و برنامه رو تست کنید. دقیقا طبق همون چیزی که گفتم انجام بدید.
موفق باشید.

sobijoon
یک شنبه 18 تیر 1391, 11:40 صبح
با عذر خواهی از جناب mohammaddou اما اون کد برای فیلتر کردن گرید شما بهینگی نداره. چرا که با هر کاراکتری که شما در تکس باکس تون وارد میکنید یکبار به دیتا بیس وصل میشه که عملیات هزینه بری به لحاظ زمانی محسوب میشه.پس بهتر شما با ساخت شئی مث دیتا ویو اطلاعات رو یکبار داخلش بریزید و موقتا اونجا نگهداری کنید و بعد عملیات فیلتر رو با اون شی انجام بدید.

rasoul babadi
جمعه 18 مهر 1393, 14:54 عصر
veniz 2008 من از شما بابت کمک تون تشکر می کنم مشکل من هم حل شد.