نمایش نتایج 1 تا 15 از 15

نام تاپیک: ارتباط دو comboBox در سی شارپ

  1. #1

    ارتباط دو 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 به روز رسانی شود.
    آخرین ویرایش به وسیله Mahmoud.Afrad : پنج شنبه 17 بهمن 1392 در 16:09 عصر

  2. #2

    نقل قول: ارتباط دو 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();
    }


  3. #3

    نقل قول: ارتباط دو comboBox در سی شارپ

    امکانش هست فایل این برنامه رو بزارید اینجا تا ببینم و بهتر متوجه بشم؟

  4. #4

    نقل قول: ارتباط دو 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();
    }



  5. #5
    کاربر دائمی آواتار khokhan
    تاریخ عضویت
    دی 1388
    محل زندگی
    اسکو
    پست
    2,176

    نقل قول: ارتباط دو comboBox در سی شارپ

    با سلام

    البته بایستی متوجه بود که کمبو باکسهای مرتبط به هم به دوشیوه امکان پذیره ها

  6. #6

    نقل قول: ارتباط دو comboBox در سی شارپ

    نقل قول نوشته شده توسط khokhan مشاهده تاپیک
    با سلام

    البته بایستی متوجه بود که کمبو باکسهای مرتبط به هم به دوشیوه امکان پذیره ها
    ممنون میشم توضیح بدید تا یاد بگیرم . مرسی

  7. #7
    کاربر دائمی آواتار khokhan
    تاریخ عضویت
    دی 1388
    محل زندگی
    اسکو
    پست
    2,176

    نقل قول: ارتباط دو comboBox در سی شارپ

    با سلام مجدد

    یک روش اینه که شما تنها از یک جدول واحد استفاده کنید یعنی اینکه از یه جدول یک ستون برای کمبوی اولی و از ستونی دیگر برای کمبوی دومی استفاده کنید

    این حالت ساده ترین روش هست وخیلی آسون صورت می گیرد

    2 . روش دوم که یه کم دشوار از روش قبلی هستش اینه که کمبوی اولی از یه ستون در یک جدول از دیتابیس پر بشه و کمبوی دومی از یک ستون از یک جدول دیگه در همان دیتابیس تغذیه بشه البته در این روش اختصاص کلید در هر دو جدول نقش اساسی داره

    در هر دوروش بایستی کمبوی اولی رو که متصل کردی کمبوی دومی رو در رویداد SelectedIndexChanged کمبو باکس اول مقدار دهی کنی

    موفق باشی

  8. #8

    نقل قول: ارتباط دو comboBox در سی شارپ

    نقل قول نوشته شده توسط khokhan مشاهده تاپیک
    با سلام مجدد

    یک روش اینه که شما تنها از یک جدول واحد استفاده کنید یعنی اینکه از یه جدول یک ستون برای کمبوی اولی و از ستونی دیگر برای کمبوی دومی استفاده کنید

    این حالت ساده ترین روش هست وخیلی آسون صورت می گیرد

    2 . روش دوم که یه کم دشوار از روش قبلی هستش اینه که کمبوی اولی از یه ستون در یک جدول از دیتابیس پر بشه و کمبوی دومی از یک ستون از یک جدول دیگه در همان دیتابیس تغذیه بشه البته در این روش اختصاص کلید در هر دو جدول نقش اساسی داره

    در هر دوروش بایستی کمبوی اولی رو که متصل کردی کمبوی دومی رو در رویداد SelectedIndexChanged کمبو باکس اول مقدار دهی کنی

    موفق باشی
    این روش شما فرقی با کد های که من در بالا آوردم فرقی نداره تنها تفاوتش در کد نوشتن در رویداد کمبوباکس هستش .
    موافق یاشید

  9. #9
    کاربر دائمی آواتار khokhan
    تاریخ عضویت
    دی 1388
    محل زندگی
    اسکو
    پست
    2,176

    نقل قول: ارتباط دو comboBox در سی شارپ

    با سلام مجدد

    این نمونه برای روش نوع اول هستش که هر دو ستون که برای کمبوباکس اول ودوم استفاده شده درون یک جدول قرار دارند

    اگه برای نوع دوم هم نمونه خواستی بگو
    فایل های ضمیمه فایل های ضمیمه

  10. #10

    نقل قول: ارتباط دو comboBox در سی شارپ

    اگر امکانش هست، ممنون می شم برای نوع دوم هم نمونه قرار بدید
    با سپاس

  11. #11

    نقل قول: ارتباط دو comboBox در سی شارپ

    نقل قول نوشته شده توسط khokhan مشاهده تاپیک
    با سلام مجدد

    یک روش اینه که شما تنها از یک جدول واحد استفاده کنید یعنی اینکه از یه جدول یک ستون برای کمبوی اولی و از ستونی دیگر برای کمبوی دومی استفاده کنید

    این حالت ساده ترین روش هست وخیلی آسون صورت می گیرد

    2 . روش دوم که یه کم دشوار از روش قبلی هستش اینه که کمبوی اولی از یه ستون در یک جدول از دیتابیس پر بشه و کمبوی دومی از یک ستون از یک جدول دیگه در همان دیتابیس تغذیه بشه البته در این روش اختصاص کلید در هر دو جدول نقش اساسی داره

    در هر دوروش بایستی کمبوی اولی رو که متصل کردی کمبوی دومی رو در رویداد SelectedIndexChanged کمبو باکس اول مقدار دهی کنی

    موفق باشی

    میشه لطف کنین مورد دوم رو با کد توضیح بدین؟
    آخرین ویرایش به وسیله shm184 : پنج شنبه 21 شهریور 1392 در 20:47 عصر

  12. #12
    کاربر دائمی آواتار khokhan
    تاریخ عضویت
    دی 1388
    محل زندگی
    اسکو
    پست
    2,176

    نقل قول: ارتباط دو 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;

    }

  13. #13

    نقل قول: ارتباط دو comboBox در سی شارپ

    با سلام
    این نمونه پروژه که گذاشتی دیتابیسش باز نمیشه با چه ورژنی نوشته شده ؟؟؟؟

  14. #14

    نقل قول: ارتباط دو 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(".اطلاعات شما با موفقیت ثبت گردید");
    }



  15. #15

    نقل قول: ارتباط دو 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 رو هم بنویسی برام. خیلی ممنونم

تاپیک های مشابه

  1. ارتباط با Access در سی شارپ
    نوشته شده توسط مدیر پرشین تیم در بخش C#‎‎
    پاسخ: 13
    آخرین پست: سه شنبه 01 مرداد 1398, 16:08 عصر
  2. ارتباط دو combobox با یکدیگر
    نوشته شده توسط hasti_62 در بخش برنامه نویسی در 6 VB
    پاسخ: 3
    آخرین پست: سه شنبه 17 اسفند 1389, 10:44 صبح
  3. ارتباط دو فرم در سی شارپ
    نوشته شده توسط saeedjafari در بخش C#‎‎
    پاسخ: 7
    آخرین پست: شنبه 24 مهر 1389, 14:18 عصر
  4. ارتباط داده ها با سی شارپ در اکسس
    نوشته شده توسط alimehrabani در بخش دسترسی به داده ها (ADO.Net و LINQ و ...)
    پاسخ: 3
    آخرین پست: سه شنبه 17 فروردین 1389, 11:19 صبح
  5. ارتباط کریستال ریپورت با سی شارپ
    نوشته شده توسط alioreza در بخش ابزارهای گزارش سازی
    پاسخ: 5
    آخرین پست: چهارشنبه 20 شهریور 1387, 09:19 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •