PDA

View Full Version : سوال: جستجو در جدول و نمایش در data gridview



mahestan
دوشنبه 01 آبان 1391, 21:35 عصر
سلام من میخوام تو c# یه combobox بزارم که آیتم هاش فیلد های یه جدول هستن بعد میخوام یه دکمه بذارم که وقتی رو دکمه کلیک میکنی بر اساس یکی از آیتم های combobox و مقداری که در textbox می نویسم با استفاده از تابع find جستجو انجام بده و نتیجه رو یه صورت یه سطر از اطلاعات اون جدول در datagridview نمایش بده ، خودم تا جایی که جستجو میکنه و اندیس سطر رو بر میگردونه نوشتم و درست عمل میکنه فقط نمیدونم چطور بهش بگم سطر مربوط به این اندیس رو تو gridview نمایش بده.در واقع میخوام بدونم چی باید تو قسمت else بنویسم.
لطفا کمکم کنید

فرم وکدی که تو دکمه نوشتم رو پاین میذارم



94240







private





void button1_Click(object sender, EventArgs e)


{



SqlConnection conn = new SqlConnection("server=(local);initial catalog=University;integrated security=true");


conn.Open();





SqlDataAdapter da = new SqlDataAdapter("select * from Teachers", conn);






DataSet ds = new DataSet();






DataView dv = new DataView();


da.Fill(ds,



"Teachers");


dv = ds.Tables[



"Teachers"].DefaultView;






string s;


s = comboBox1.SelectedItem.ToString();

dv.Sort = s +



" desc ";








int i;


i = dv.Find(textBox1.Text);





if (i == (-1))


{





MessageBox.Show(textBox1.Text + " وجود ندارد");


}





else


{





//MessageBox.Show(textBox1.Text + " هست در ایندکس شماره :" + i.ToString());






}


conn.Close();

}

danialafshari
سه شنبه 02 آبان 1391, 06:42 صبح
سلام
به این شکل می تونی استفاده کنی :
if (cboField.Text.Trim() == "کد محصول")
{
//ID_Product
bindingSource1.Filter = "ID_Product='" + txtFind.Text + "'";
}
else if (cboField.Text.Trim() == "شناسه سیستم")
{
//syscode
bindingSource1.Filter = "SysCode='" + txtFind.Text + "'";
}

mahestan
چهارشنبه 03 آبان 1391, 08:47 صبح
سلام ممنون از جوابتون اما من همونطور که گفتم نمیخوام جستجو فقط با یه فیلد مشخص باشه میخوام کاربر با انتخابی که از combobox میکنه خودش مشخص کنه عمل جستجو بر اساس کدوم فیلد انجام بشه و مقداری که دنبالش میگرده رو هم داخل textbox بنویسه.
در ضمن من نمیدونم تابع cboField.Text.Trim چکار میکنه لطفا توضیح بدید.بازم از لطفتون ممنونم

حسین شهریاری
چهارشنبه 03 آبان 1391, 09:46 صبح
با فرض اینکه فیلدهای شما در ComboBox1 و قراره از TextBox1 مقدار را بگیره:
روش اول:

da.selectcommand.commandtext="select * from table where "+combobox1.text+"="+textbox1.text;
روش دوم:

bs.filter=combobox1.text+"="+textbox1.text;
bs همون BindingSource هست.
موفق باشید

mahestan
یک شنبه 07 آبان 1391, 15:53 عصر
با فرض اینکه فیلدهای شما در ComboBox1 و قراره از TextBox1 مقدار را بگیره:
روش اول:

da.selectcommand.commandtext="select * from table where "+combobox1.text+"="+textbox1.text;
روش دوم:

bs.filter=combobox1.text+"="+textbox1.text;
bs همون BindingSource هست.
موفق باشید


سلام ممنون از پاسختون
من روش اول رو امتحان کردم برای بعضی فیلد ها جواب میده برای بعضی ها جواب نمیده من نوع فیلد های جدول رو ( که در combobox نوشتم ) در پایین می نویسم
TeacherID = int
(TeacherName =nvarchar(50
(Mobile = char(11
(NationalCode = char(12
جستجو بر اساس فیلد Mobile درست انجام میشه ولی برای فیلد های دیگه نه!!!
با روش دوم هم آشنا نیستم و نمیدونم اگه از روش دوم شما استفاده کنم باید
dataGridView1.DataSource
را برابر با چه چیزی قرار بدم؟
لطفا توضیح بدید

mahestan
یک شنبه 07 آبان 1391, 15:54 عصر
سلام
به این شکل می تونی استفاده کنی :
if (cboField.Text.Trim() == "کد محصول")
{
//ID_Product
bindingSource1.Filter = "ID_Product='" + txtFind.Text + "'";
}
else if (cboField.Text.Trim() == "شناسه سیستم")
{
//syscode
bindingSource1.Filter = "SysCode='" + txtFind.Text + "'";
}

سلام ممنون از جوابتون اما من همونطور که گفتم نمیخوام جستجو فقط با یه فیلد مشخص باشه میخوام کاربر با انتخابی که از combobox میکنه خودش مشخص کنه عمل جستجو بر اساس کدوم فیلد انجام بشه و مقداری که دنبالش میگرده رو هم داخل textbox بنویسه.
در ضمن من نمیدونم تابع cboField.Text.Trim چکار میکنه لطفا توضیح بدید.بازم از لطفتون ممنونم

mahestan
چهارشنبه 10 آبان 1391, 14:47 عصر
سلام کسی نمیتونه کمکم کنه کد خودم و تکمیل کنم؟ :افسرده::گریه:

malihehshajari
چهارشنبه 10 آبان 1391, 14:55 عصر
خب شما میتونید از سوئیچ - کیس استفاده کنید به این صورت که بر اساس هر فیلدتون یک مدل سلکت بنویسید و کاربر هر کدوم رو که انتخاب کرد سلکت مربوط به اون فیلد اجرا بشه و گرید ویو بر اساس اون سلکت پر بشه