ارتباط دو comboBox در سی شارپ
سلام
من می خوام ارتباط بین دو تا comboBax ایجاد کنم، کد زیر را نوشتم، می خوام وقتی که در comboBox1 چیزی انتخاب می شود، آیتم های مرتبط با آن که در جدول تعریف شده در Combox2 نمایش داده شوند، می شه بگید کدوم قسمت کد زیر ایراد دارد که نتیجه مورد نظر را نمی گیرم
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
namespace relatedComboBox
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
string strSql, strCon;
strCon = "Provider=Microsoft.jet.OLEDB.4.0;" + "Data Source=D:\\dbt.mdb";
OleDbConnection con = new OleDbConnection(strCon);
con.Open();
OleDbDataAdapter da = new OleDbDataAdapter("select * from test ORDER BY sorat ASC", con);
DataSet ds = new DataSet();
ds.Tables.Add("test");
da.Fill(ds, "test");
comboBox1.DataSource = ds.Tables["test"];
// comboBox1.DisplayMember = ds.Tables["test"].Columns["sorat"].ToString();
comboBox1.DisplayMember = ds.Tables["test"].Columns["vazeyat"].ToString();
//comboBox1.ValueMember = ds.Tables["test"].Columns["id"].ToString();
comboBox1.ValueMember = ds.Tables["test"].Columns["sorat"].ToString();
con.Close();
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void comboBox1_SelectedValueChanged(object sender, EventArgs e)
{
string strSql, strCon;
strCon = "Provider=Microsoft.jet.OLEDB.4.0;" + "Data Source=D:\\dbt.mdb";
OleDbConnection con1 = new OleDbConnection(strCon);
con1.Open();
OleDbDataAdapter sda4 = new OleDbDataAdapter("SELECT * FROM test2 WHERE t1 " + comboBox1.SelectedValue, con1);
DataSet ds4 = new DataSet();
ds4.Tables.Add("test2");
sda4.Fill(ds4, "test2");
comboBox2.DataSource = ds4.Tables["test2"];
comboBox2.DisplayMember = ds4.Tables["test2"].Columns["t1"].ToString();
con1.Close();
}
}
}
می شه لطفا بگید با چه دستوری می تونم وقتی اطلاعاتی وارد comboBox می شود، همان موقع combox به روز رسانی شود.
نقل قول: ارتباط دو comboBox در سی شارپ
سلام
من از Validating استفاده می کنیم یعنی وقتی که کمبوباکس فوکس خودشو از دست بده
try
{
if (con.State == ConnectionState.Closed)
con.Open();
da = new OleDbDataAdapter("select * from Sazman where DR_ID="+cbNameDr.SelectedValue+"", con);
DataSet dsSazman = new DataSet();
DataView dvsazman = new DataView();
da.Fill(dsSazman, "Sazman");
dvsazman.Table = dsSazman.Tables["Sazman"];
cbSazman.DataSource = dvsazman;
cbSazman.DisplayMember = "Name";
cbSazman.ValueMember = "ID";
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
if (con.State == ConnectionState.Open)
con.Close();
}
نقل قول: ارتباط دو comboBox در سی شارپ
امکانش هست فایل این برنامه رو بزارید اینجا تا ببینم و بهتر متوجه بشم؟
نقل قول: ارتباط دو comboBox در سی شارپ
نقل قول:
نوشته شده توسط
rashidi_sm
امکانش هست فایل این برنامه رو بزارید اینجا تا ببینم و بهتر متوجه بشم؟
1- بایند کردن اطلاعات بانک به کمبوباکس 1
try
{
if (con.State == ConnectionState.Closed)
con.Open();
da = new OleDbDataAdapter("select * from Nametable", con);
da.Fill(ds, "Nametable");
dv.Table = ds.Tables["Nametable"];
cbName.DataSource = dv;
cbName.DisplayMember = "Namefiled";
cbName.ValueMember = "ID";
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
if (con.State == ConnectionState.Open)
con.Close();
}
مرحله بعد از دست فوکس هستش داخل رویداد Validatingاین کد ها رو نوشتم که اطلاعات کمبوباکس دومت پر میشه .
try
{
if (con.State == ConnectionState.Closed)
con.Open();
da = new OleDbDataAdapter("select * from Nametable where NameFiled="+cbName.SelectedValue+"", con);
DataSet dsSazman = new DataSet();
DataView dvsazman = new DataView();
da.Fill(dsSazman, "Nametable");
dvsazman.Table = dsSazman.Tables["Nametable"];
cbSazman.DataSource = dvsazman;
cbSazman.DisplayMember = "Name";
cbSazman.ValueMember = "ID";
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
if (con.State == ConnectionState.Open)
con.Close();
}
نقل قول: ارتباط دو comboBox در سی شارپ
با سلام
البته بایستی متوجه بود که کمبو باکسهای مرتبط به هم به دوشیوه امکان پذیره ها:لبخند:
نقل قول: ارتباط دو comboBox در سی شارپ
نقل قول:
نوشته شده توسط
khokhan
با سلام
البته بایستی متوجه بود که کمبو باکسهای مرتبط به هم به دوشیوه امکان پذیره ها:لبخند:
ممنون میشم توضیح بدید تا یاد بگیرم . مرسی
نقل قول: ارتباط دو comboBox در سی شارپ
با سلام مجدد
یک روش اینه که شما تنها از یک جدول واحد استفاده کنید یعنی اینکه از یه جدول یک ستون برای کمبوی اولی و از ستونی دیگر برای کمبوی دومی استفاده کنید
این حالت ساده ترین روش هست وخیلی آسون صورت می گیرد
2 . روش دوم که یه کم دشوار از روش قبلی هستش اینه که کمبوی اولی از یه ستون در یک جدول از دیتابیس پر بشه و کمبوی دومی از یک ستون از یک جدول دیگه در همان دیتابیس تغذیه بشه البته در این روش اختصاص کلید در هر دو جدول نقش اساسی داره
در هر دوروش بایستی کمبوی اولی رو که متصل کردی کمبوی دومی رو در رویداد SelectedIndexChanged کمبو باکس اول مقدار دهی کنی
موفق باشی
نقل قول: ارتباط دو comboBox در سی شارپ
نقل قول:
نوشته شده توسط
khokhan
با سلام مجدد
یک روش اینه که شما تنها از یک جدول واحد استفاده کنید یعنی اینکه از یه جدول یک ستون برای کمبوی اولی و از ستونی دیگر برای کمبوی دومی استفاده کنید
این حالت ساده ترین روش هست وخیلی آسون صورت می گیرد
2 . روش دوم که یه کم دشوار از روش قبلی هستش اینه که کمبوی اولی از یه ستون در یک جدول از دیتابیس پر بشه و کمبوی دومی از یک ستون از یک جدول دیگه در همان دیتابیس تغذیه بشه البته در این روش اختصاص کلید در هر دو جدول نقش اساسی داره
در هر دوروش بایستی کمبوی اولی رو که متصل کردی کمبوی دومی رو در رویداد SelectedIndexChanged کمبو باکس اول مقدار دهی کنی
موفق باشی
این روش شما فرقی با کد های که من در بالا آوردم فرقی نداره تنها تفاوتش در کد نوشتن در رویداد کمبوباکس هستش .
موافق یاشید
1 ضمیمه
نقل قول: ارتباط دو comboBox در سی شارپ
با سلام مجدد
این نمونه برای روش نوع اول هستش که هر دو ستون که برای کمبوباکس اول ودوم استفاده شده درون یک جدول قرار دارند
اگه برای نوع دوم هم نمونه خواستی بگو :لبخند:
نقل قول: ارتباط دو comboBox در سی شارپ
اگر امکانش هست، ممنون می شم برای نوع دوم هم نمونه قرار بدید
با سپاس
نقل قول: ارتباط دو comboBox در سی شارپ
نقل قول:
نوشته شده توسط
khokhan
با سلام مجدد
یک روش اینه که شما تنها از یک جدول واحد استفاده کنید یعنی اینکه از یه جدول یک ستون برای کمبوی اولی و از ستونی دیگر برای کمبوی دومی استفاده کنید
این حالت ساده ترین روش هست وخیلی آسون صورت می گیرد
2 . روش دوم که یه کم دشوار از روش قبلی هستش اینه که کمبوی اولی از یه ستون در یک جدول از دیتابیس پر بشه و کمبوی دومی از یک ستون از یک جدول دیگه در همان دیتابیس تغذیه بشه البته در این روش اختصاص کلید در هر دو جدول نقش اساسی داره
در هر دوروش بایستی کمبوی اولی رو که متصل کردی کمبوی دومی رو در رویداد SelectedIndexChanged کمبو باکس اول مقدار دهی کنی
موفق باشی
میشه لطف کنین مورد دوم رو با کد توضیح بدین؟
نقل قول: ارتباط دو comboBox در سی شارپ
نقل قول:
نوشته شده توسط
shm184
میشه لطف کنین مورد دوم رو با کد توضیح بدین؟
کل پروژه دو قسمت بیشتر نیست :لبخند:
کمبوی مربوط به استان در رویداد لود فرم از فیلد State پر می شه البته برای اینکه نام استان چندمرتبه در این فیلد تکرار شده بنابر این برای اینکه گزینه های کمبو تکراری نباشه کوئری با DISTINCT اجرا می شه :
private void Form3_Load(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(strCon);
str = "SELECT DISTINCT State from zirna order by State asc";
com = new SqlCommand(str, con);
sqlda = new SqlDataAdapter(com);
ds = new DataSet();
sqlda.Fill(ds, "zirna");
comboBox1.DataSource = ds.Tables["zirna"].DefaultView;
comboBox1.DisplayMember = "State";
}
کدهای پر کردن کمبوی مربوط به شهر ها در رویداد SelectedIndexChanged کمبوی مربوط به استانها نوشته شده
تا به محض تغیر در گزینه انتخابی استان شهرهای مربوط به همان استان در کمبوی دوم ریخته بشه
والبته با توجه به فیلد id استان ها
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (comboBox1.SelectedIndex != -1)
{
SqlConnection con = new SqlConnection(strCon);
SqlDataAdapter da = new SqlDataAdapter("SELECT city FROM zirna WHERE State= @pid", con);
da.SelectCommand.Parameters.AddWithValue("@pid", (((DataRowView)comboBox1.SelectedItem)["State"].ToString()));
DataTable tbl2 = new DataTable();
da.Fill(tbl2);
comboBox2.DataSource = tbl2;
comboBox2.DisplayMember = "city";
}
else
comboBox2.DataSource = null;
}
نقل قول: ارتباط دو comboBox در سی شارپ
با سلام
این نمونه پروژه که گذاشتی دیتابیسش باز نمیشه با چه ورژنی نوشته شده ؟؟؟؟
نقل قول: ارتباط دو comboBox در سی شارپ
یا سلام
یه سوال داشتم من یه windows form دارم که صفحه ثبت نام هست و در اوب تاریخ تولد رو با 3 تا combobox وارد یک فیلد دیتابیس به نام bdate ذخیره میکنم ولی دچار مشکل شدم کدم به صورت زیره: con.Open();
string query="insert into Personal(First_Name,Last_Name,IDNo,MelliCode,BPlac e,Father_Name,Tel,Address,Id_Edu,Branch,Password,I d_Semat,Sex,Married) VALUES ('"+txtName.Text+"','"+txtFname.Text+"','"+txtIDNo .Text+"','"+txtMelliCode.Text+"','"+cbBPlace.Text+ "','"+txtFatherName.Text+"','"+txtMobile.Text+"',' "+txtAddress.Text+"','"+cbEdu.SelectedValue+"','"+ txtBranch.Text+"','"+txtPassword.Text+"','"+cbSema t.SelectedValue+"','"+cbSex.SelectedValue+"','"+cb Married.SelectedValue+"')";
SqlCommand cmd = new SqlCommand();
cmd.Parameters.Add("Bdate",Convert.ToDateTime(cbBY ear.Text+"/"+cbBMonth.Text+"/"+cbBYear.Text));
cmd.CommandText = query;
cmd.Connection = con;
cmd.ExecuteNonQuery();
MessageBox.Show(".اطلاعات شما با موفقیت ثبت گردید");
}
نقل قول: ارتباط دو comboBox در سی شارپ
نقل قول:
نوشته شده توسط
khokhan
کل پروژه دو قسمت بیشتر نیست :لبخند:
کمبوی مربوط به استان در رویداد لود فرم از فیلد State پر می شه البته برای اینکه نام استان چندمرتبه در این فیلد تکرار شده بنابر این برای اینکه گزینه های کمبو تکراری نباشه کوئری با DISTINCT اجرا می شه :
private void Form3_Load(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(strCon);
str = "SELECT DISTINCT State from zirna order by State asc";
com = new SqlCommand(str, con);
sqlda = new SqlDataAdapter(com);
ds = new DataSet();
sqlda.Fill(ds, "zirna");
comboBox1.DataSource = ds.Tables["zirna"].DefaultView;
comboBox1.DisplayMember = "State";
}
کدهای پر کردن کمبوی مربوط به شهر ها در رویداد SelectedIndexChanged کمبوی مربوط به استانها نوشته شده
تا به محض تغیر در گزینه انتخابی استان شهرهای مربوط به همان استان در کمبوی دوم ریخته بشه
والبته با توجه به فیلد id استان ها
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (comboBox1.SelectedIndex != -1)
{
SqlConnection con = new SqlConnection(strCon);
SqlDataAdapter da = new SqlDataAdapter("SELECT city FROM zirna WHERE State= @pid", con);
da.SelectCommand.Parameters.AddWithValue("@pid", (((DataRowView)comboBox1.SelectedItem)["State"].ToString()));
DataTable tbl2 = new DataTable();
da.Fill(tbl2);
comboBox2.DataSource = tbl2;
comboBox2.DisplayMember = "city";
}
else
comboBox2.DataSource = null;
}
میشه محبت کنی دستور linq رو هم بنویسی برام. خیلی ممنونم