PDA

View Full Version : خطا در هنگام انتخاب ویلو ممبر کمبوباکس



programerinfonet
دوشنبه 16 دی 1392, 15:59 عصر
سلام دوستان
من تو فرمم دو تا کمبوباکس دارم که کد زیر رو توی رویداد لود فرمم نوشتم

DataSet ds2 = new DataSet();
SqlDataAdapter da = new SqlDataAdapter("select Berand_Id,Berand from Table_Berand ", cn);

da.Fill(ds2, "Table_Berand");
cb1.DataSource = ds2.Tables["Table_Berand"];
cb1.DisplayMember = "Berand";

و کد زیر رو هم تو رویداد selected index change کمبو اولی نوشتم که value member رو انتخاب کنه


cb1.ValueMember = "Berand_Id";
STR_BERANDID =Convert.ToString(cb1.SelectedValue.ToString());


اما در هنگام لود شدن فرم خطای زیر رو میده و بعد اجرا میشه چه جوری از خطای رخ داده جلو گیری کنم ؟
این رو هم بگم که فیل bernad_ID از نوع Int می باشد

hashtgerd2
دوشنبه 16 دی 1392, 16:36 عصر
کدت مشکل داره
این خط رو اضافه نکردی
کد بالایی اینجوری بشه
DataSet ds2 = new DataSet();
SqlDataAdapter da = new SqlDataAdapter("select Berand_Id,Berand from Table_Berand ", cn);

da.Fill(ds2);
cb1.DataSource = new BindingSource(ds2, null);
cb1.DisplayMember = "Berand";

hashtgerd2
دوشنبه 16 دی 1392, 16:37 عصر
به جای اسم تیبل باید اسم دیتاتیبل یا اسم دیتاست رو مینوشتی

programerinfonet
دوشنبه 16 دی 1392, 16:52 عصر
کدت مشکل داره
این خط رو اضافه نکردی
کد بالایی اینجوری بشه
DataSet ds2 = new DataSet();
SqlDataAdapter da = new SqlDataAdapter("select Berand_Id,Berand from Table_Berand ", cn);

da.Fill(ds2);
cb1.DataSource = new BindingSource(ds2, null);
cb1.DisplayMember = "Berand";

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

hashtgerd2
دوشنبه 16 دی 1392, 16:57 عصر
من از این کد استفاده میکنم هیچ مشکلی نداره کار میکنه
DataTable table2 = new DataTable();
using (SqlConnection sqlConn = new SqlConnection(MDIParent1.connectionstringsql)) //use your conn. string here
{
using (SqlDataAdapter da = new SqlDataAdapter(@"SELECT c_ID,c_name FROM customer", sqlConn))
da.Fill(table2);
}
cmbcustomer.DataSource = new BindingSource(table2, null);
cmbcustomer.DisplayMember = "c_name";
cmbcustomer.ValueMember = "c_ID";
try { lblC_ID.Text = cmbcustomer.SelectedValue.ToString(); }
catch { }

تو رویداد
cmbcustomer_SelectedIndexChanged
هم اینو نوشتم

lblC_ID.Text = cmbcustomer.SelectedValue.ToString();

programerinfonet
دوشنبه 16 دی 1392, 17:45 عصر
حالا این کد کجاش مشکل داره ؟

DataSet ds2 = new DataSet();
SqlDataAdapter da2 = new SqlDataAdapter("select * from Table_Model WHERE Berand_ID ='" + STR_BERANDID + "'", cn);
da2.Fill(ds2, "Table_Model");
cb2.DataSource = ds2.Tables["Table_Model"];
cb2.DisplayMember = "Model";

فیلد Berand_ID از نوع int و کلید میباشد

hashtgerd2
دوشنبه 16 دی 1392, 17:58 عصر
تو قسمت شرطت وقتی از نوع int هستش باید مقدار شرطت هم از نوع int باشه. اون رشته رو توی شرطت به عدد تبدیل کن
احتیاجی به گذاشتن کوتیشن نیست واسه پر کردن دیتاست یا دیتاتیبل نباید اسم تیبل رو بنویسی همون که داخل کوئری هستش کافیه اونی که من نوشتم درسته
Berand_ID =" +int32.parse(STR_BERANDID) + "

programerinfonet
دوشنبه 16 دی 1392, 18:24 عصر
خطای Input String In A Currect Format رو میده

meysamrt
دوشنبه 16 دی 1392, 18:44 عصر
دوست من شما فقط خط db2.DataSource رو منتقل کن به انتهای کدت. یعنی بعد از خط DisplayMember قرار بده درست میشه

programerinfonet
دوشنبه 16 دی 1392, 19:07 عصر
نه دوست عزیز الان مشکل روی خطای Input String In A Currect Format می باشه که در کد زیر روی داده

DataSet ds2 = new DataSet();
SqlDataAdapter da2 = new SqlDataAdapter("select * from Table_Model WHERE Berand_ID =" + Convert.ToInt16(cb1.SelectedValue.ToString()) + "", cn);
da2.Fill(ds2, "Table_Model");
cb2.DataSource = ds2.Tables["Table_Model"];
cb2.DisplayMember = "Model";

programerinfonet
دوشنبه 16 دی 1392, 19:55 عصر
یکی بیاد جواب بده
کمک

hashtgerd2
دوشنبه 16 دی 1392, 20:17 عصر
کدت رو کامل تر بنویس بگو می خوای چیکار کنی دقیقا
اینی که می خوای رو من دارم تو برنامه استفاده کردم مشکلی نداره کار میکنه

programerinfonet
دوشنبه 16 دی 1392, 21:20 عصر
این کد من

DataSet ds2 = new DataSet();
SqlDataAdapter da2 = new SqlDataAdapter("select * from Table_Model WHERE Berand_ID =" + Convert.ToInt16(cb1.SelectedValue.ToString()) + "", cn);
da2.Fill(ds2, "Table_Model");
cb2.DataSource = ds2.Tables["Table_Model"];
cb2.DisplayMember = "Model";
میخوام اگه تو کمبوباکس اول یعنی cb1انتخاب کردم سایپا تمام محصولات سایپا تو کمبوباکس دوم یعنی cb2 نمایش داده بشه
جستجو هم بر اسا id صورت میگیره که از نوع int هست

hashtgerd2
دوشنبه 16 دی 1392, 22:19 عصر
نمیشه که display value فقط یک مقدار رو تو هر انتخاب بر می گردونه
اگه مقدار چند تا فیلد رو می خوای توی کمبو باکس دوم بریزی قضیه فرق داره
مقدار هارو بریز توی ارایه بعد از ارایه بریز توی کمبوباکس دوم
اگه خواستی کامل تر بگو فردا اومدم درست میکنم بای

programerinfonet
دوشنبه 16 دی 1392, 23:47 عصر
نه قرار نیست مقدار چند تا فیلد بیاد مقدار یک فیلد همون