PDA

View Full Version : query dropdown list



mahtab13
یک شنبه 01 مرداد 1391, 17:26 عصر
سلام خسته نباشید
دوستان من در پروژم یه جستجو کتاب دارم ، این جستجو می تونه بر اساس نام کتاب ، نوسینده و موضوع باشه
می خوام کاربر یکی از موارد گفته شده رو از طریق dropdown list انتخاب کنه و در یک textbox مقدار مورد نظر رو بنویسه
چطور شرط خودم رو قرار بدم ؟ یعنی چطور بگم حالا باید کدام فیلد رو مورد جستجو قرار بده
با تشکر از رهنمایتون

Sirwan Afifi
یک شنبه 01 مرداد 1391, 21:52 عصر
دستور SQLتون رو به این شکل برای Search تغییر بدید،نیازی به if نداره :


"Select *from Book Where "+ComboBox1.SelectedValue.ToString()....

mahtab13
یک شنبه 01 مرداد 1391, 23:03 عصر
سلام ممنون که جواب دادین
اما منظور من این بود اگه کاربر از dropdown list نام کتاب رو انتخاب کرد ، در texbox نام کتاب رو بنویسه و جستجو رو بر اساس نام کتاب انجام بده ، اگه نویسنده زد برا اساس نویسنده و همینطور تا اخر
اما اینطور که شما نوشتید که میشه جستجو برا اساس اطلاعات dropdown list
؟
ممنون از راهنمایتون

Y_Safaiee
یک شنبه 01 مرداد 1391, 23:45 عصر
با سلام خدمت شما دوست گرامی

در ابتدا بگم این روش قدیمی شده و من یادمه وقتی 15سالم بود(الان 24 سالمه) از این روش استفاده میشد الان روشهای پویاتر و زیباتری هست که دست کاربرو باز میذاره و نیازی نیست کاربر برای هر مدل جستجوش فیلدشو انتخاب کنه.



cmd.CommandText = "select * from table1 where " + comboBox1.Text + " like '" + textBox2.Text + "%'";


اینجا اول کاربر باید از کمبوباکس بگه کدوم فیلد(مثلا نام,شماره دانشجویی,شهر) بعد با نوشتن متنش تو textbox روی اون فیلد فیلتر میشه,مثلا اگه شهر رو انتخاب کنه با زدن حرف م همه شهرهایی که اولش م هست میاد,اگه از کمبوباکس نام رو انتخاب کنه و ی رو بنویسه کل اسم هایی که اولش ی هست میاد


برای نمایش دادن فیلدی که انتخاب شده هم کلی راه هست مثلا اینطوری :



switch (comboBox1.SelectedIndex)
{
case 0:
label1.Text = "بر حسب نام";
break;
case 1:
label1.Text = "بر حسب کد ملی";
break;
}


موفق باشین
بایت بایت

Sirwan Afifi
دوشنبه 02 مرداد 1391, 00:17 صبح
در ابتدا بگم این روش قدیمی شده و من یادمه وقتی 15سالم بود(الان 24 سالمه) از این روش استفاده میشد الان روشهای پویاتر و زیباتری هست که دست کاربرو باز میذاره و نیازی نیست کاربر برای هر مدل جستجوش فیلدشو انتخاب کنه.

این از اون روش های پویاست :

ابتدا شما باید یه کلاس تعریع کنید که شامل 2 پراپرتی Text و Value باشه و سپس باید متد ToStringش رو به صورت زیر Override کنید تا Textی که شما می خواید رو برگردونه به این صورت :

public class ComboBoxItem
{
public string Text { get; set; }
public object Value { get; set; }
public override string ToString()
{
return Text;
}
}

و به این صورت از کلاس فوق می تونی استفاده کنی :

ComboBoxItem item = new ComboBoxItem();
item.Text = "نام نویسنده";
item.Value = "author";
comboBox1.Items.Add(item);

و به این صورت می تونید عمل Search رو براساس فیلد انتخاب شده از دیتاگرید انجام بدید :

SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=ekbatantech;Integrated Security=True");
SqlDataAdapter da = new SqlDataAdapter("select * from Books where " + (comboBox1.SelectedItem as ComboBoxItem).Value.ToString() + " = '" + textBox2.Text + "'", con);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;

موفق باشید.

Sirwan Afifi
دوشنبه 02 مرداد 1391, 00:19 صبح
در ضمن با یه سرچ کوچیک می تونستید پاسخ رو پیدا کنید(+ (http://stackoverflow.com/questions/3063320/combobox-adding-text-and-value-to-an-item-no-binding-source))