PDA

View Full Version : جست و جوی پیشرفته



mammad_asir
جمعه 09 بهمن 1388, 22:44 عصر
یه بانک با فیلد های id,name,fname,namepedar داریم و یه فرم جست و جو که اگه بعضی از این تکس باکس ها را خالی کذاشتیم بازم جستو جوکنه یعنی با وارد کردن یک نام کلیه هم نام ها در دیتا گرید نشون بده در ضمن باید فیلد نام پدر را در lable نشان بدهد ممنون دوستان فقط کمی ساده تر بگین

hakelberfin
شنبه 10 بهمن 1388, 00:06 صبح
این کد کاری که شما میخواین رو انجام میده


System.Data.SqlClient.SqlCommand SqlCommand = new System.Data.SqlClient.SqlCommand();
SqlCommand.Connection = SqlConnection;
SqlCommand.CommandType = CommandType.Text;
SqlCommand.CommandText = "SELECT id , name , fname , namepedar FROM ViewName WHERE id<>0 ";

if (this.textBox_name.Text.Trim().Length != 0)
SqlCommand.CommandText += "AND name LIKE(N'" + this.textBox_name.Text.Trim() + "%') ";

if(this.textBox_fname.Text != string.Empty)
{
SqlCommand.CommandText += " AND fname LIKE(N'" + this.textBox_fname.Text.Trim() + "%') ";
}
if (this.textBox_namepedar.Text != string.Empty)
{
SqlCommand.CommandText += " AND namepedar LIKE(N'" + this.textBox_namepedar.Text.Trim() + "%') ";
}

SqlCommand.CommandText += "ORDER BY fname";
DataTable dataTable = new DataTable();
SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();
sqlDataAdapter.SelectCommand = SqlCommand;
sqlDataAdapter.Fill(dataTable);
this.dataGridView1.DataSource = dataTable;

نام پدر رو زمانی میتونی در یه Label نشون بدی که نتیجه ی جستجو یک رکورد باشه .

mammad_asir
شنبه 10 بهمن 1388, 13:37 عصر
ممنون دوست عزیز ولی منظورم از لیبل این بود که مثلا 10 تا هم نام در گرید بود روی هر کدوم که کلیک میکنیم نام پدر مربوط را توی لیبل نشون بده ولی مشکلم با این کد شما حل شد ممنون

aminh85
شنبه 10 بهمن 1388, 16:26 عصر
فکر کنم این بدردت بخوره. البته این متدو باید تو ایونت
CurrentCellChanged دیتاگریدت فراخونی کنی:


private void func_display(int row)
{
if (row >= 0 && row < _ds.Tables["tblsec"].Rows.Count)
{
_BeCanChange = false;
this.BindingContext[_ds, "tblsec"].Position = row;
txtName.Text = Convert.ToString(_ds.Tables["tblsec"].Rows[row]["nvcname"]);
txtFamily.Text = Convert.ToString(_ds.Tables["tblsec"].Rows[row]["nvcfamily"]);
dteDate.Text = Convert.ToString(_ds.Tables["tblsec"].Rows[row]["nvcrdate"]);
txtUsername.Text = Convert.ToString(_ds.Tables["tblsec"].Rows[row]["nvcuserid"]);
txtR1.Text = Convert.ToString(_ds.Tables["tblsec"].Rows[row]["nvcpass"]);
cboType.SelectedIndex = Convert.ToInt32(_ds.Tables["tblsec"].Rows[row]["inttype"]);
txtNote.Text = Convert.ToString(_ds.Tables["tblsec"].Rows[row]["nvcnote"]);
txtR2.Clear();
_BeCanChange = true;
}
}

البته باید تو ایونت CurrentCellChanged کد زیر بنویسی:


DataGridViewRow row = new DataGridViewRow();
row = dgwResult.CurrentRow;
if (row != null)
func_display(row.Index);