PDA

View Full Version : خطای Input String Was Not In a Currect Format



programerinfonet
سه شنبه 17 دی 1392, 11:43 صبح
سلام دوستان من این سوالو قبلأ هم پرسیدم اما به نتیجه ی مطلوبی نرسیدم
خواهشأ کمکم کنید


private int INT_BERANDID;
private void kharidaran_Load(object sender, EventArgs e)
{
cn.Open();
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter("select Berand_Id,Berand from Table_Berand ", cn);

da.Fill(dt);
cb1.DataSource = new BindingSource(dt, null);
cb1.DisplayMember = "Berand";
cb1.ValueMember = "Berand_Id";
}

private void cb1_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
INT_BERANDID = Convert.ToInt32(cb1.SelectedValue.ToString());
DataSet ds2 = new DataSet();
SqlDataAdapter da2 = new SqlDataAdapter("select * from Table_Model WHERE Berand_ID =" + INT_BERANDID + "", cn);
da2.Fill(ds2, "Table_Model");
cb2.DataSource = ds2.Tables["Table_Model"];
cb2.DisplayMember = "Model";
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}

}

تو رویداد اولد کمبوباکس اول از جدول برن پر میشه و میخوام با انتخاب هر آیتم از کمبوی اول آیتم های جدول مدل که id هاشون با آیتم انتخابی کمبوی اول یکی هست تو کمبوی دوم نمایش داده میشه
که خطای Input String Was Not In a Currect Format رو میده توروخدا کمک کنید ببینید مشکل از کجاست
فیلدهای id ها هم تو هر دو جدول از نوع int هستن

forodo
سه شنبه 17 دی 1392, 11:53 صبح
سلام
این خط رو :

SqlDataAdapter da2 = new SqlDataAdapter("select * from Table_Model WHERE Berand_ID =" + INT_BERANDID + "", cn);

اینجوری بنویس:

SqlDataAdapter da2 = new SqlDataAdapter("select * from Table_Model WHERE Berand_ID =" + INT_BERANDID, cn);

+ "" رو برداد.

programerinfonet
سه شنبه 17 دی 1392, 12:02 عصر
سلام
این خط رو :

SqlDataAdapter da2 = new SqlDataAdapter("select * from Table_Model WHERE Berand_ID =" + INT_BERANDID + "", cn);

اینجوری بنویس:

SqlDataAdapter da2 = new SqlDataAdapter("select * from Table_Model WHERE Berand_ID =" + INT_BERANDID, cn);

+ "" رو برداد.

نه درست نشد !!

sagggad
سه شنبه 17 دی 1392, 12:03 عصر
با سلام
نمیدونید از کودوم خط ارور میگیره؟

programerinfonet
سه شنبه 17 دی 1392, 12:06 عصر
چرا از خط اول کمبوباکس که مقدار Int تبدیل میشه
بعد خطا رو کد رد می کنم فرم لود میشه و کار می کنه
من فکر می کنم زمانی که فرم میخواد لود بشه اون خاصیت cb1.SelectedValue خالیه به همین خاط نمی تونه چیزی رو تبدیل کنه

sagggad
سه شنبه 17 دی 1392, 12:11 عصر
فکر کنم این منطقی نیست که ابتدا به Int و دوباره به String تبدیلش کردید...
کد زیر :

INT_BERANDID = Convert.ToInt32(cb1.SelectedValue.ToString());

به این تغییر بده:

INT_BERANDID = Convert.ToInt32(cb1.SelectedValue);

شاید درست بشه...

programerinfonet
سه شنبه 17 دی 1392, 12:14 عصر
اونم امتحان کردم نشد

sagggad
سه شنبه 17 دی 1392, 12:15 عصر
شما برای چی از SelectedValue استفاده کردید؟

programerinfonet
سه شنبه 17 دی 1392, 12:20 عصر
اینم بگم که وقتی کدو می برم توی یک رویداد دیگه مثلأ کلیک یک دکمه می نویسم درست میشه
حالا چی کار کنم
؟؟؟؟؟؟؟؟؟

programerinfonet
سه شنبه 17 دی 1392, 12:21 عصر
شما برای چی از SelectedValue استفاده کردید؟

برای اینکه به VALUEMEMBER کمبوباکس نیاز دارم یعنی اصلأ اون ملاک جستجوی

sagggad
سه شنبه 17 دی 1392, 12:23 عصر
شما مگه نمی گی از کد زیر ارور میگیره؟

INT_BERANDID = Convert.ToInt32(cb1.SelectedValue.ToString());

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

programerinfonet
سه شنبه 17 دی 1392, 12:45 عصر
الان جواب این سوالمو بدید اگه میشه مرسی

DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter("select Berand_Id,Berand from Table_Berand ", cn);
da.Fill(dt);
cb1.DataSource = new BindingSource(dt, null);
cb1.DisplayMember = "Berand";
cb1.ValueMember = "Berand_Id";

به کد بالا چه جوری میتونم یک آیتم دیگه اضافه کنم به طور دستی مثلأ "انتخاب همه"

boveiryghasem
سه شنبه 17 دی 1392, 13:40 عصر
سلام

این لینک رو مطالعه کن:
http://msdn.microsoft.com/en-us/library/5ycd1034.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1

اینم کدش شما باید به دیتاست سطر اضافه کنی همین.


DataRow newCustomersRow = dataSet1.Tables["Customers"].NewRow(); newCustomersRow["CustomerID"] = "ALFKI"; newCustomersRow["CompanyName"] = "Alfreds Futterkiste"; dataSet1.Tables["Customers"].Rows.Add(newCustomersRow);

boveiryghasem
سه شنبه 17 دی 1392, 13:49 عصر
با این کد هم میتونی این کار انجام بدی ولی باید بازم سطر جدید تو دیتاست اضافه کنی مثل کد زیر:
DataRow dr1 = tESTDataSet.Tables[0].NewRow();
dr1["Column name"] = "value1";
DataRow dr2 = tESTDataSet.Tables[0].NewRow();
dr2["Column name"] = "value2";
DataRow dr3 = tESTDataSet.Tables[0].NewRow();
dr3["Column name"] = "value3";

tESTDataSet.Tables[0].Rows.Add(dr1);
tESTDataSet.Tables[0].Rows.Add(dr2);
tESTDataSet.Tables[0].Rows.Add(dr3);

Column name همون اسم ستون توی جدول دیتابیست هستش یادت باشه.

programerinfonet
سه شنبه 17 دی 1392, 13:55 عصر
سلام

این لینک رو مطالعه کن:
http://msdn.microsoft.com/en-us/library/5ycd1034.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1

اینم کدش شما باید به دیتاست سطر اضافه کنی همین.


DataRow newCustomersRow = dataSet1.Tables["Customers"].NewRow(); newCustomersRow["CustomerID"] = "ALFKI"; newCustomersRow["CompanyName"] = "Alfreds Futterkiste"; dataSet1.Tables["Customers"].Rows.Add(newCustomersRow);

مرسی من کارم راه افتاد اما اون سطر انتخابی آخر سطرهای دیگه اضافه شده . چی کار کنم که به عنوان آیتم اول اضافه بشه ؟؟؟

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

DataRow newCustomersRow = ds2.Tables["Table_Berand"].NewRow();
newCustomersRow["Berand"] = "<-انتخاب کنید->";
ds2.Tables["Table_Berand"].Rows.Add(newCustomersRow);

cb1.DataSource = ds2.Tables["Table_Berand"];
cb1.DisplayMember = "Berand";
cb1.ValueMember = "Berand_Id";