PDA

View Full Version : مشکل در گرفتن مقدار انتخاب شده در dropdownlist



H/-\mid
دوشنبه 20 فروردین 1386, 02:56 صبح
سلام.
من دو تا dropdownlist دارم که با انتخاب dropdownlist1 زیر مجموعه های اون توی dropdownlist2 ابجاد میشه . البته این کار بدون refresh کردن صفحه انجام میشه و اطلاعات رو از طریق جاوااسکریپت داخل dropdownlist میریزم.
من میخوام که مقدار dropdownlist2 داخل دیتابیس ذخیره بشه.
برای گرفتن مقدار dropdownlist2 از دستور زیر استفاده میکنم:

DropDownList2.SelectedValue.ToString()

اما این دستور هیچ مقداری رو برنمیگردونه.
که فکر میکنم بخاطر refresh نشدن صفحه باشه چون توی source صفحه هم که نگاه میکنم کد اچ تی ام ال زیرمجموعه ها ساخته نشده ولی توی صفحه نمایش داده میشه.
برای ریختن آیتم ها توی dropdownlist2 هم از این دستور استفاده میکنم:

function oncomplete(arg,ctx){
var data=arg.split("|");


for(var i=0;i<data.length;i++)
{
var sdata=data[i].split("#");
var htmlcode=document.createElement('option');
var d2=document.getElementById('DropDownList2').append Child(htmlcode);
htmlcode.value=sdata[1];
htmlcode.innerHTML=sdata[0];
}
}


کسی میدونه چطور میتونم مقدار انتخابی dropdownlist2 رو بگیرم؟

ممنون

fereshte22
دوشنبه 20 فروردین 1386, 09:35 صبح
دوست عزیز به این لینک یه نگاهی بنداز
http://www.barnamenevis.org/forum/showthread.php?t=63954

H/-\mid
دوشنبه 20 فروردین 1386, 12:47 عصر
ممنون .ولی مشکل من حل نشد.چون من بدون ریفرش کردن صفحه این کار رو انجام میدم.

صابر
دوشنبه 20 فروردین 1386, 15:06 عصر
یک HiddenField توی صفحه بذارین.
از طریق رویداد OnClientClick مربوط به دکمه ذخیره در دیتابیس، مقدار اون HiddenField رو با آیتم انتخاب شده پر کنید.
توی کد سمت سرور، HiddenField1.Value رو توی دیتابیس ذخیره کنید.

H/-\mid
دوشنبه 20 فروردین 1386, 21:15 عصر
ممنون...درست شد.

fereshte22
سه شنبه 21 فروردین 1386, 09:50 صبح
سلام ببینید من از این برنامه برای کار خودم ااستفاده کردم که یکی از دوستان در همین انجمن vb.net برام فرستاده بود حالا میخواستم ببینم ایا مشکل refresh نشدن او را با روشی که شما گفتید(استفاده از کنترلHiddenField1 میشه حل کرد.البته من تا حالا با این کنترل کار نکردم .من یه کار ی شبیه اونچه شما گفته بودید کردم ولی مشکلم حل نشد البته احتمالا درست انجام ندادهام
نمونه کد:

Protected Sub LinkButton1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles LinkButton1.Click
کد مربوط به مقدار دهی به کنترل hiddenfield1
HiddenField1.Value = drpzirshakheh.SelectedItem.Text
zirshakheh1 = HiddenField1.Value

'********************
Protected Sub drponvan_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles drponvan.Load
If Not Page.IsPostBack Then
con = New SqlConnection("Data Source=SEPAHAN-BD5CB18\SQLEXPRESS;Initial Catalog=ssgshop;Integrated Security=True")
' (ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString)
Dim cmd As New SqlCommand("SELECT number,mozoh FROM sarshakheh", con)
con.Open()
Dim r As SqlDataReader = cmd.ExecuteReader()
drponvan.DataTextField = "mozoh"
drponvan.DataValueField = "number"
drponvan.DataSource = r
drponvan.DataBind()
con.Close()
If drponvan.Items.Count > 0 Then
drponvan_SelectedIndexChanged(Nothing, Nothing)
End If
End If
End Sub
Protected Sub drponvan_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles drponvan.SelectedIndexChanged
con = New SqlConnection("Data Source=SEPAHAN-BD5CB18\SQLEXPRESS;Initial Catalog=ssgshop;Integrated Security=True")
Dim cmd As New SqlCommand("SELECT number,name FROM zirshakheh WHERE idnamesar=@idnamesar", con)
cmd.Parameters.Add("@idnamesar", Data.SqlDbType.TinyInt).Value = drponvan.SelectedValue
con.Open()
Dim r As SqlDataReader = cmd.ExecuteReader()
drpzirshakheh.DataTextField = "name"
drpzirshakheh.DataValueField = "number"
drpzirshakheh.DataSource = r
drpzirshakheh.DataBind()
con.Close()
End Sub



اگه دوستان راهنمایی کنند ممنون میشوم

H/-\mid
سه شنبه 21 فروردین 1386, 17:29 عصر
سلام ببینید من از این برنامه برای کار خودم ااستفاده کردم که یکی از دوستان در همین انجمن vb.net برام فرستاده بود حالا میخواستم ببینم ایا مشکل refresh نشدن او را با روشی که شما گفتید(استفاده از کنترلHiddenField1 میشه حل کرد.البته من تا حالا با این کنترل کار نکردم .من یه کار ی شبیه اونچه شما گفته بودید کردم ولی مشکلم حل نشد البته احتمالا درست انجام ندادهام
نمونه کد:

ProtectedSub LinkButton1_Click(ByVal sender AsObject, ByVal e As System.EventArgs) Handles LinkButton1.Click
کد مربوط به مقدار دهی به کنترل hiddenfield1
HiddenField1.Value = drpzirshakheh.SelectedItem.Text
zirshakheh1 = HiddenField1.Value

'********************
ProtectedSub drponvan_Load(ByVal sender AsObject, ByVal e As System.EventArgs) Handles drponvan.Load
IfNot Page.IsPostBack Then
con = New SqlConnection("Data Source=SEPAHAN-BD5CB18\SQLEXPRESS;Initial Catalog=ssgshop;Integrated Security=True")
' (ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString)
Dim cmd AsNew SqlCommand("SELECT number,mozoh FROM sarshakheh", con)
con.Open()
Dim r As SqlDataReader = cmd.ExecuteReader()
drponvan.DataTextField = "mozoh"
drponvan.DataValueField = "number"
drponvan.DataSource = r
drponvan.DataBind()
con.Close()
If drponvan.Items.Count > 0 Then
drponvan_SelectedIndexChanged(Nothing, Nothing)
EndIf
EndIf
EndSub
ProtectedSub drponvan_SelectedIndexChanged(ByVal sender AsObject, ByVal e As System.EventArgs) Handles drponvan.SelectedIndexChanged
con = New SqlConnection("Data Source=SEPAHAN-BD5CB18\SQLEXPRESS;Initial Catalog=ssgshop;Integrated Security=True")
Dim cmd AsNew SqlCommand("SELECT number,name FROM zirshakheh WHERE idnamesar=@idnamesar", con)
cmd.Parameters.Add("@idnamesar", Data.SqlDbType.TinyInt).Value = drponvan.SelectedValue
con.Open()
Dim r As SqlDataReader = cmd.ExecuteReader()
drpzirshakheh.DataTextField = "name"
drpzirshakheh.DataValueField = "number"
drpzirshakheh.DataSource = r
drpzirshakheh.DataBind()
con.Close()
EndSub


اگه دوستان راهنمایی کنند ممنون میشوم
مشکل شما با این کد چیه؟

fereshte22
سه شنبه 21 فروردین 1386, 20:29 عصر
سلام
این کد مشکلی ندارد فقط من هم میخواهم این امکان را داشته باشد که بدون refresh شدن صفحه اجرا شود

صابر
سه شنبه 21 فروردین 1386, 20:55 عصر
مشکل اون دوستمون فرق میکرد.
ایشون بدون Refresh با استفاده از javascript یه مقداری رو توی DropDown میریختن، ولی از سمت servrer بهش دسترسی نداشتن.
اما شما میخواین کلاً عملیات سمت serverتون بدون Refresh انجام بشه.
برای این کار از Ajax استفاده کنید.

Alireza_Salehi
سه شنبه 21 فروردین 1386, 21:31 عصر
سلام
این کد مشکلی ندارد فقط من هم میخواهم این امکان را داشته باشد که بدون refresh شدن صفحه اجرا شود

همون طور که صابر (http://www.barnamenevis.org/forum/member.php?u=87) گفت از AJAX استفاده کنید!

کافیه یک UpdatePanel رو فرم بذارید و این DropDown ها رو درونش بذارید ، دیگه Refresh بی Refresh !

H/-\mid
سه شنبه 21 فروردین 1386, 22:54 عصر
مشکل اون دوستمون فرق میکرد.
ایشون بدون Refresh با استفاده از javascript یه مقداری رو توی DropDown میریختن، ولی از سمت servrer بهش دسترسی نداشتن.
اما شما میخواین کلاً عملیات سمت serverتون بدون Refresh انجام بشه.
برای این کار از Ajax استفاده کنید.
البته من اطلاعات رو از دیتابیس میگیرم و توسط جاوا اسکریپت و با استفاده از اینترفیس ICallBackEventHandler به کنترل مقدار میدم و از updatepanel استفاده نمیکنم.

صابر
سه شنبه 21 فروردین 1386, 23:14 عصر
فرقی نمیکنه :)
هر دو از XMLHTTP استفاده میکنن و جزء خانواده AJAX هستن.

fereshte22
شنبه 25 فروردین 1386, 16:16 عصر
من بعد از چند روز پشت گوش انداختن سرانجام این atlas را دانلود کردم و همون طور که دوستمون گفتند با استفاده از updatepanel مشکلم حل شد
ممنون

chemical
شنبه 25 فروردین 1386, 17:41 عصر
برای گرفتن مقدار dropdownlist2 از دستور زیر استفاده میکنم:

DropDownList2.SelectedValue.ToString()

اما این دستور هیچ مقداری رو برنمیگردونه.




SelectedValue نمی تونه مقداری برا شما برگردونه چون با JavaScript فقط SelectedItem رو پر کردین. از این دستور استفاده کنین، احتمالا جواب بده:


DropDownList2.SelectedItem.Text()