ورود

View Full Version : مشکل ثبت اطلاعات DropDownList



amir_T_2008
جمعه 25 تیر 1395, 05:21 صبح
سلام

من دو تا جدول دارم که یکی استان و یکی شهر های ایران هستش و به وسیله DropDownList اول، استان فراخوانی میکنم و DropDownList دوم شهر مرتبط با استان فراخوانی میکنم ولی در هنگام ثبت نهایی زمانی که شهر های انتخاب شده داخل دیتابیس میریزم در فیلد استان به جای اسم مثلا اصفهان کد مربوط که 4 هست ثبت شده ولی در فیلد شهر همون نام شهر مثلا کاشان ثبت شده در صورتی که میخوام در هر جفتش نام شهر ثبت بشه.

حالا من سوالم اینه آیا راه حلی هست که بشه این درست کرد چون خیلی سعی کردم ولی نمیدونم مشکل کجاست و اگر نمیشه میشه موقعی که داریم توسط
گرید اطلاعات فراخوانی میکنم بیایم کدی بنویسیم که به جای 4 بیاد بنویسه اصفهان ؟؟؟؟
کد ها قرار میدم ممنون میشم مشکل پیدا کنید.




<asp:DropDownList ID="State" runat="server" AutoPostBack = "true"
OnSelectedIndexChanged="ddlContinents_SelectedIndexChanged">
<asp:ListItem Text = "--Select Country--" Value = ""></asp:ListItem>
</asp:DropDownList>

<asp:DropDownList ID="city" runat="server" >
<asp:ListItem Text = "--Select city--" Value = ""></asp:ListItem>
</asp:DropDownList>






if (!IsPostBack)
{
State.AppendDataBoundItems = true;
String strConnString = ConfigurationManager
.ConnectionStrings["ConnectionStr"].ConnectionString;
String strQuery = "select ID, Name from State";
SqlConnection con = new SqlConnection(strConnString);
SqlCommand cmd = new SqlCommand();

cmd.CommandType = CommandType.Text;
cmd.CommandText = strQuery;
cmd.Connection = con;
try
{
con.Open();
State.DataSource = cmd.ExecuteReader();
State.DataTextField = "name";
State.DataValueField = "id";
State.DataBind();
}
catch (Exception ex)
{
throw ex;
}
finally
{
con.Close();
con.Dispose();
}
}






protected void ddlContinents_SelectedIndexChanged(object sender, EventArgs e)
{
city.Items.Clear();
city.Items.Add(new ListItem("--Select city--", ""));



city.AppendDataBoundItems = true;
String strConnString = ConfigurationManager
.ConnectionStrings["ConnectionStr"].ConnectionString;
String strQuery = "select ID, Name, StateId from City " +
"where StateId=@StateId";
SqlConnection con = new SqlConnection(strConnString);
SqlCommand cmd = new SqlCommand();
cmd.Parameters.AddWithValue("@StateId",
State.SelectedItem.Value);
cmd.CommandType = CommandType.Text;
cmd.CommandText = strQuery;
cmd.Connection = con;
try
{
con.Open();
city.DataSource = cmd.ExecuteReader();
city.DataTextField = "Name";
city.DataValueField = "name";
city.DataBind();
if (city.Items.Count > 1)
{
city.Enabled = true;
}
else
{
city.Enabled = false;

}
}
catch (Exception ex)
{
throw ex;
}
finally
{
con.Close();
con.Dispose();
}






State.Text = "";

city.Text = "";


protected void Button1_Click(object sender, EventArgs e)
{
SqlCommand cmd = new SqlCommand("insert into Tbl_CV(Name,Family,Birth_Date,State,City,Education al_situation,Last_educationa_certificate) values('" + Name.Text + "','" + Family.Text + "',N'" + birthday.Text + "',N'" + State.Text + "',N'" + city.Text + "','" + RadioButtonList1.Text + "','" + Madrak.Text + "')", con);




ممنون میشم راهنمایی کنید همراه با مثال


پیشاپیش متشکرم

javad13
جمعه 25 تیر 1395, 09:42 صبح
سلام
كدتو كه اصلا خوب ننوشتي ، حتما بصورت mvc بنويس چندتا كلاس بزار و از اونها استفاده كن.
چرا از لينك استفاده نكردي ؟
منظورت از اين جمله چيه :در صورتی که میخوام در هر جفتش نام شهر ثبت بشه. ، مگه نام استان و نام شهر نبايد ذخيره بشه ؟ تو بايد يه جدول داشته باشي كه نام استانها باشه و يه جدول نام شهرها.
كه بصورت master و detail بهم مربوط بشن يني چي؟ يني اينكه آيدي استان ( primary ) رو در جدول شهر بصورت فيلد خارجي تعريف كني و ارتباطشون رو هم برقرار كني.
خب بعدش موقعيكه كاربر استان و بعدش شهر رو فراخواني كرد توجه كن چون از ajax استفاده نكردي صفحت رفرش ميشه پس ، حتما !ispostback ، رو چك كن و بعد از انتخاب شهر ، دستور insert رو فراخواني كن.
اگر ريز كد نويسي ميخاي كداتو كامل بزار و پشت سر هم.

amir_T_2008
جمعه 25 تیر 1395, 15:07 عصر
دوست عزیز شما متوجه سوال من نشدید.ببینید من هم 2 تا جدول جدا یکی برای استان و یکی برای شهر و برای نمایش و ارتباط 2 تا DropDownList هیچ مشکلی ندارم و به درستی کار میکنه اما زمانی که کاربر استان و شهر انتخاب میکنه و روی ارسال کلیک میکنه به جای اینکه در دیتابیس اینجوری ثبت بشه که مثلا اصفهان - کاشان اینجوری ثبت میشه که 4 - کاشان یعنی به جای اسم استان اصفهان کد 4 که مربوط به استان اصفهان هست ثبت میشه . من میخوام اسم اصفهان ثبت بشه نه اینکه کد 4 .

بعد کدی که قرار دادم به جز قسمت آخر که اطلاعات ثبت میکنه بقیه قسمت ها مربوط به DropDownList هستش و کامل و به ترتیت هستش و قسمت آخر کد که مربوط به ثبت اطلاعات هستش و قسمت مربوط به این موضوع قرار دادم و بقیه قسمت ها مربوط به این بحث نیست


ممنونم

amir_T_2008
شنبه 26 تیر 1395, 03:43 صبح
از دوستان کسی میتونه یک سمپل برای من درست کنه که دوتا dropdownlist باشه که یک اطلاعاتی از دیتابیس بگیره و این دوتا به هم مربوط باشه یعنی اول استان گیلان انتخاب میکه توی دراپ دان دومی شهر ها بیاد و بعد که مثلا شهر لاهیجان انتخاب کرد روی دکمه submit که کلیک کرد نام گیلان و لاهیجان به دیتابیس انتقال داده بشه.


ممنون میشم کسی این کار بکنه

amir_T_2008
یک شنبه 27 تیر 1395, 01:30 صبح
از دوستان کسی نمیتونه کمک کنه ؟؟؟؟

kamranetemadi
یک شنبه 27 تیر 1395, 21:12 عصر
عزیزم برای استان اینو نوشتی
State.DataTextField = "name";
State.DataValueField = "id";
و برای شهر اینو
city.DataTextField = "Name";
city.DataValueField = "name";


خب برای استان هم مثل شهر بنویس مشکلت حله دیگه!!!!!
به عبارتی فیلد value رو هم با name پر کن

amir_T_2008
دوشنبه 28 تیر 1395, 01:41 صبح
عزیزم برای استان اینو نوشتی
State.DataTextField = "name";
State.DataValueField = "id";
و برای شهر اینو
city.DataTextField = "Name";
city.DataValueField = "name";


خب برای استان هم مثل شهر بنویس مشکلت حله دیگه!!!!!
به عبارتی فیلد value رو هم با name پر کن


مشکل اینه وقتی id به name تغییر میدوم اونوقت برای dropdown دومی که وصل هست به اولی مشکل ایجاد میشه و ارور میده .واقعا چند روز هست درگیرم لطفا کمک کنید

amir_T_2008
دوشنبه 28 تیر 1395, 03:48 صبح
مشکلم با کمک یک کد دیگه حل شد.