ارتباط بین دو کمبو باکس

ma1191

عضو جدید
سلام دوستان، ممنون میشم اگه در این مورد کمکم کنید

من میخوام بین دو combobox و پایگاه داده اتصالی برقرار کنم، البته نمیدونم درسته یا نه
دو تا combo دارم و جدول هایی به اسم کالا و برند کالا دارم و همچنین برای برندهای هر کالا جدول جدا
combobox1 به جدول کالا وصله و با اون مشکلی ندارم
ولی میخوام combobox2 بسته به نوع کالایی که در combo1 انتخاب میکنم به جدول مربوط به برندهای اون کالا وصل شه
دستور زیر و نوشتم ولی درست نیست
sqldataadapter da=new sqldataadapter("select * from @tbname");
da.select.parameters.addwithvalue("@tbname",combobox1.text);
میشه لطفا راهنماییم کنید، اصلا میشه همچین کاری کرد؟
 

iaidin

عضو جدید
سلام دوستان، ممنون میشم اگه در این مورد کمکم کنیدمن میخوام بین دو combobox و پایگاه داده اتصالی برقرار کنم، البته نمیدونم درسته یا نهدو تا combo دارم و جدول هایی به اسم کالا و برند کالا دارم و همچنین برای برندهای هر کالا جدول جداcombobox1 به جدول کالا وصله و با اون مشکلی ندارمولی میخوام combobox2 بسته به نوع کالایی که در combo1 انتخاب میکنم به جدول مربوط به برندهای اون کالا وصل شهدستور زیر و نوشتم ولی درست نیستsqldataadapter da=new sqldataadapter("select * from @tbname");da.select.parameters.addwithvalue("@tbname",combobox1.text);میشه لطفا راهنماییم کنید، اصلا میشه همچین کاری کرد؟
بله امکان پذیره ابتدا کمبو یک را از بانک پر کنید(مثلا تو لود فرم). مرحله بعد به ازای تغییر ایندکس کمبو یک بررسی کنید که اگه آیتمی انتخاب شده و بر اساس اون کمبو دو را پر کنید.
 

bili.koote

عضو جدید
مشکل در پرکردن آیتم های یک کمبوباکس با توجه به مقدار انتخاب شده در کمبوباکس دیگر

مشکل در پرکردن آیتم های یک کمبوباکس با توجه به مقدار انتخاب شده در کمبوباکس دیگر

من هم دقیقا می خواستم با توجه به مقداری که تو کمبوباکس اول انتخاب شده، آیتم های کمبوباکس دوم محدود بشه.
این کد رو توی فرم لود نوشتم:
کد:
SqlConnection con1 = new SqlConnection();
            con1.ConnectionString = "data source=localhost;initial  catalog=tamrin;integrated security=sspi;persist security info=true";
            con1.Open();
            SqlDataAdapter sda = new SqlDataAdapter("select * from t_reshte ORDER BY name ASC", con1);
            DataSet ds = new DataSet();
            ds.Tables.Add("t_reshte");
            sda.Fill(ds, "t_reshte");
            comboBox1.DataSource = ds.Tables["t_reshte"];
            comboBox1.DisplayMember = ds.Tables["t_reshte"].Columns["name"].ToString();
            comboBox1.ValueMember = ds.Tables["t_reshte"].Columns["id"].ToString();
که وقتی من یه رشته رو انتخاب می کنم به جای اسم رشته، فیلد آیدی مربوط به اون رشته رو ارسال کنه به دیتابیس.
داخل رویداد تغییر اندیس کمبوباکس یک هم این کد رو نوشتم:
کد:
SqlConnection con4 = new SqlConnection();
            con4.ConnectionString = "data source=localhost;initial  catalog=tamrin;integrated security=sspi;persist security info=true";
            con4.Open();
            SqlDataAdapter sda4 = new SqlDataAdapter("select * from  t_ostad where (KodeReshte=N'" + comboBox4.SelectedValue + "')", con4);
DataSet ds4 = new DataSet();
            ds4.Tables.Add("t_ostad");
            sda4.Fill(ds4, "t_ostad");
            comboBox5.DataSource = ds4.Tables["t_ostad"];
            comboBox5.DisplayMember = ds4.Tables["t_ostad"].Columns["name"].ToString();
            con4.Close();

اما وقتی شرط where رو میذارم تو دستور select بهم خطا میده:
Syntax error converting the nvarchar value 'System.Data.DataRowView' to a column of data type smallint
بهم گفتن به جای selected Value از TEXT استفاده کنم اما با توجه به اینکه من آیدی رشته رو می خوام ، رشته رو نمیتونه تو فیلد کد که عددی تعریف کردم بریزه.
 
آخرین ویرایش:

negin17h

مدیر تالارهای مهندسی کامپیوتر و رباتیکمتخصص #C
مدیر تالار
من هم دقیقا می خواستم با توجه به مقداری که تو کمبوباکس اول انتخاب شده، آیتم های کمبوباکس دوم محدود بشه.
این کد رو توی فرم لود نوشتم:
کد:
SqlConnection con1 = new SqlConnection();
            con1.ConnectionString = "data source=localhost;initial  catalog=tamrin;integrated security=sspi;persist security info=true";
            con1.Open();
            SqlDataAdapter sda = new SqlDataAdapter("select * from t_reshte ORDER BY name ASC", con1);
            DataSet ds = new DataSet();
            ds.Tables.Add("t_reshte");
            sda.Fill(ds, "t_reshte");
            comboBox1.DataSource = ds.Tables["t_reshte"];
            comboBox1.DisplayMember = ds.Tables["t_reshte"].Columns["name"].ToString();
            comboBox1.ValueMember = ds.Tables["t_reshte"].Columns["id"].ToString();
که وقتی من یه رشته رو انتخاب می کنم به جای اسم رشته، فیلد آیدی مربوط به اون رشته رو ارسال کنه به دیتابیس.
داخل رویداد تغییر اندیس کمبوباکس یک هم این کد رو نوشتم:
کد:
SqlConnection con4 = new SqlConnection();
            con4.ConnectionString = "data source=localhost;initial  catalog=tamrin;integrated security=sspi;persist security info=true";
            con4.Open();
            SqlDataAdapter sda4 = new SqlDataAdapter("select * from  t_ostad where (KodeReshte=N'" + comboBox4.SelectedValue + "')", con4);
DataSet ds4 = new DataSet();
            ds4.Tables.Add("t_ostad");
            sda4.Fill(ds4, "t_ostad");
            comboBox5.DataSource = ds4.Tables["t_ostad"];
            comboBox5.DisplayMember = ds4.Tables["t_ostad"].Columns["name"].ToString();
            con4.Close();

اما وقتی شرط where رو میذارم تو دستور select بهم خطا میده:
Syntax error converting the nvarchar value 'System.Data.DataRowView' to a column of data type smallint
بهم گفتن به جای selected Value از TEXT استفاده کنم اما با توجه به اینکه من آیدی رشته رو می خوام ، رشته رو نمیتونه تو فیلد کد که عددی تعریف کردم بریزه.

يك Binding Manager Base تعريف كنيد و به ديتاست كمبو بايند كنيد و در رويداد تغيير آن، با استفاده از ويژگي position براحتي آي دي رو بدست بياريد. استفاده از selectedValue كمبو گاهي مشكلاتي دارد :gol:
 

iaidin

عضو جدید
يك Binding Manager Base تعريف كنيد و به ديتاست كمبو بايند كنيد و در رويداد تغيير آن، با استفاده از ويژگي position براحتي آي دي رو بدست بياريد. استفاده از selectedValue كمبو گاهي مشكلاتي دارد :gol:
بله همینطوره البته این دوستمون میتونن از همین روش کدی که نوشتن استفاده کنن و از displaymember , valuemember برای کمبوها بهره بگیرند.
 

Similar threads

بالا