PDA

View Full Version : نمایش ایتم های drop downlist 2 با توچه به drop down list1



keshvari72
دوشنبه 14 اردیبهشت 1394, 15:45 عصر
سلام دوستان
دو تا DropDownList گذاشتم میخام با تو جه ب DropDownList1 محتویات DropDownList2 تغیر کنه مثلا میخام اگ شهر تهران رو تو اولی انتخاب کردم دومی شهرستان های تهران مث دماوند و ... بیاد ممنون میشم اگ کمک کنید

csharp.net
دوشنبه 14 اردیبهشت 1394, 15:58 عصر
برای پر کردن یک کمبوباکس بر اساس کمبوباکس دیگر باید به صورت زیر عمل کرد ،
1- پر کردن کمبوباکس ها
2- ارتباط بین آنها
در این مثال combobox ها را با استفاده از اطلاعات موجود در بانک پر کرده و ارتباط بین آنها را نیز از طریق برقرار می کنیم. فرض کنید دو کمبوباکس داریم. یکی از آنها نام استان ها و دیگری نام شهر ها را در خود جای می دهد :
http://www.w3-farsi.com/wp-content/uploads/2015/03/fill-combobox-base-on-other-combobox-1.png (http://www.w3-farsi.com/wp-content/uploads/2015/03/fill-combobox-base-on-other-combobox-1.png)


جدول استان ها را به صورت زیر :

http://www.w3-farsi.com/wp-content/uploads/2015/03/fill-combobox-base-on-other-combobox-2.png (http://www.w3-farsi.com/wp-content/uploads/2015/03/fill-combobox-base-on-other-combobox-2.png)


و جدول شهرها را به صورت زیر ایجاد کنید :

http://www.w3-farsi.com/wp-content/uploads/2015/03/fill-combobox-base-on-other-combobox-3.png (http://www.w3-farsi.com/wp-content/uploads/2015/03/fill-combobox-base-on-other-combobox-3.png)


همانطور که در دو شکل بالا مشاهده می کنید، جدول استان ها دارای یک فیلد id و جدول شهرها هم دارای فیلد ostan_id می باشد. فیلد ostan_id یک کلید خارجی است و مقادیری که قرار است دریافت کند همان مقادیری است که در فیلد id استان ها قرار دارند. پس ارتباط بین این دو جدول و کمبوباکس از این طریق برقرار می شود. با دوبار کلیک بر روی فرم به محیط کدنویسی رفته و کدهای زیر را بنویسید :


using System;
using System.Data;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace FillComboBoxBasedOnOther
{
public partial class Form1 : Form
{


private string connectionString = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=" + Application.StartupPath + @"\db.mdf;Integrated Security=True;Connect Timeout=30";
private SqlConnection connection = new SqlConnection();

public Form1()
{
InitializeComponent();

this.connection.ConnectionString = connectionString;
}

private DataTable Ostan() {

string selectQuery = "SELECT id, name FROM Ostan";
SqlCommand command = new SqlCommand(selectQuery, connection);
SqlDataAdapter adapter = new SqlDataAdapter(command);

DataTable result = new System.Data.DataTable();
adapter.Fill(result);
return result;
}

private DataTable Shahr(int ostan_id)
{
string selectQuery = "SELECT id, name FROM Shahr WHERE ostan_id = @ostan_id";
SqlCommand command = new SqlCommand(selectQuery, connection);
command.Parameters.AddWithValue("@ostan_id", ostan_id);
SqlDataAdapter adapter = new SqlDataAdapter(command);

DataTable result = new System.Data.DataTable();
adapter.Fill(result);
return result;
}


private void Form1_Load(object sender, EventArgs e)
{
this.comboBox1.DisplayMember = "name";
this.comboBox1.ValueMember = "id";
this.comboBox1.DataSource = Ostan();
}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (this.comboBox1.Items.Count > 0)
{
int ostan_id = (int)this.comboBox1.SelectedValue;
DataTable shahrestan = Shahr(ostan_id);
this.comboBox2.DisplayMember = "name";
this.comboBox2.DataSource = shahrestan;
}
}
}
}


برنامه را اجرا و نتیجه را مشاهده کنید :

http://www.w3-farsi.com/wp-content/uploads/2015/03/fill-combobox-base-on-other-combobox-4.png (http://www.w3-farsi.com/wp-content/uploads/2015/03/fill-combobox-base-on-other-combobox-4.png)

منبع : w3-farsi.com (http://www.w3-farsi.com/%D9%BE%D8%B1-%DA%A9%D8%B1%D8%AF%D9%86-%DB%8C%DA%A9-combobox-%D8%A8%D8%B1-%D8%A7%D8%B3%D8%A7%D8%B3-combobox-%D8%AF%DB%8C%DA%AF%D8%B1/)

keshvari72
دوشنبه 14 اردیبهشت 1394, 16:00 عصر
داداش بدون sql میخام

keshvari72
دوشنبه 14 اردیبهشت 1394, 19:56 عصر
کس دیگه ای نیس؟!؟!!