PDA

View Full Version : سوال: کمک در رفع خطای Input String was not in a correct format



j.muhama
یک شنبه 31 اردیبهشت 1396, 19:33 عصر
با سلام خدمت دوستان
من در برنامه ام که در پلتفرم WindowsFormApplication به زبان C#‎‎‎‎ هست, دیتابیس برنامه هم SQL Server است. در یکی از فرم های برنامه, از دو تا کمبوباکس استفاده کردم .
کمبوباکس اول: اسامی استان ها رو از جدول استان ها واقع در دیتابیس برنامه می گیره .
کمبوباکس دوم: در این کمبوباکس, میخوام وقتی یکی از اسامی استان ها رو انتخاب کردم, لیست شهرهای همان استان رو نشون بده . برای مثال وقتی میخوام استان تهران رو انتخاب کنم , لیست شهرهای استان تهران رو در کمبوباکس دوم نشون بده تا بتونیم یکی از شهرها رو انتخاب کنیم.
برنامه رو نوشتم ولی نمیدونم چرا در کد زیر خطا میده و پیام خطا رو هم نوشتم:
int stateid = Convert.ToInt32(combobox1.SelectedValue.ToString() );
خطای زیر رو میده :
Input String was not in a correct format
از کد زیر هم استفاده کردم ولی بازم همون پیام خطای بالایی رو میده.
int stateid = int.Parse(combobox1.SelectedValue.ToString());
از دوستان خواهش می کنم که در این مورد به من کمک کنن. نمیدونم چرا خطا میده؟
خیلی خیلی ممنونم از لطف و محبتتون.

کد لود استان ها:

private void refreshdata()
{
con.ConnectionString = strCon;
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
cmd.CommandText = "Select * From tbl_State";
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
DataTable dt = new DataTable();
da.Fill(dt);
con.Close();
dr = dt.NewRow();
dr.ItemArray = new object[] { 0, "-- انتخاب استان--" };
dt.Rows.InsertAt(dr, 0);
cmbState.DataSource = dt;
cmbState.DisplayMember = "StateName";
cmbState.ValueMember = "ID";
}
اینم از کد لود شهرها:

private void refreshCity(int StateId)
{
con.ConnectionString = strCon;
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
cmd.CommandText = "Select * From tbl_City Where ID_State = @Id_State";
cmd.Parameters.AddWithValue("@Id_State", StateId);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
DataTable dt = new DataTable();
da.Fill(dt);
con.Close();
dr = dt.NewRow();
dr.ItemArray = new object[] { 0, "-- انتخاب شهر--" };
dt.Rows.InsertAt(dr, 0);
cmbCity.DataSource = dt;
cmbState.DisplayMember = "CityName";
cmbState.ValueMember = "ID";
}
اینم از کد رویداد SelectedIndexChanged کمبوباکس انتخاب استان

if (cmbState.SelectedValue.ToString() != null)
{
int stateid = Convert.ToInt32(cmbState.SelectedValue.ToString()) ;
refreshCity(stateid);
}

ژیار رحیمی
دوشنبه 01 خرداد 1396, 19:11 عصر
سلام
شما کدهای select کردن شهرهای هر استان را در رویداد SelectedIndexChanged کامبوباکس استان نوشتی و Index صفر آن را "-- انتخاب استان--" گذاشتی که باید در رویداد مورد نظر این انتخاب چک شود و در صورت انتخاب کدهای select شهر انجام نشود.(برای Index های بزرگتر از صفر کد اجرا شود).

if (cmbState.SelectedValue.ToString() != null && cmbState.SelectedIndex>0)
{
int stateid = Convert.ToInt32(cmbState.SelectedValue.ToString()) ;
refreshCity(stateid);
}

j.muhama
پنج شنبه 04 خرداد 1396, 15:06 عصر
جناب ژیار رحیمی عزیز خیلی ازتون ممنونم. مشکلم حل شد. دستتون درد نکنه.خیلی خیلی ممنونم از لطف و محبتتون.