简体   繁体   English

如何获取多个动态生成的下拉列表的值?

[英]How do I get the value of a multiple dynamically generated dropdownlist?

I'm doing a small website for school and I got stuck on this problem. 我正在为学校做一个小型网站,但我陷入了这个问题。 How can I get the value of each dropdownlist? 如何获得每个下拉列表的值? The dropdownlist are dynamically generated by code. 下拉列表由代码动态生成。 I did the same with the textboxes and it works perfectly, but with the values of the dropdownlists doesn't work, I mean, I don't get the values back. 我对文本框做了同样的操作,并且效果很好,但是下拉列表的值不起作用,我的意思是,我没有把这些值取回来。 What should I do? 我该怎么办?

Partial Class Opties
Inherits System.Web.UI.Page

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
Dim aantalMensen As Integer = CInt(Session("aantalVolwassenen")) + CInt(Session("aantalKinderen")) + CInt(Session("aantalBabys"))
Session("aantalMensen") = CStr(aantalMensen)

For x As Integer = 1 To aantalMensen
  'Passagiers info
  Dim aanhef As New DropDownList()
  Dim aanhefSelectie As ListItem
  aanhefSelectie = New ListItem("Dhr.", "Dhr.")
  aanhef.Items.Add(aanhefSelectie)
  aanhefSelectie = New ListItem("Mevr.", "Mevr.")
  aanhef.Items.Add(aanhefSelectie)
  Dim voornaam As New TextBox With {.ID = "txtVoornaam" & x}
  Dim achternaam As New TextBox With {.ID = "txtAchternaam" & x}


  Dim lt As New Literal()
  Dim Endlt As New Literal()
  Dim space As New Literal()
  lt.Text = "<p>Persoon " + CStr(x) + ":"
  Endlt.Text = "</p> "
  space.Text = "<br />"

  gegevensPassagiers.Controls.Add(lt)
  gegevensPassagiers.Controls.Add(aanhef)
  gegevensPassagiers.Controls.Add(voornaam)
  gegevensPassagiers.Controls.Add(achternaam)
  gegevensPassagiers.Controls.Add(Endlt)
  gegevensPassagiers.Controls.Add(space)
Next

For i As Integer = 1 To aantalMensen
  'Bagage DropDownlist
  Dim aantalKG As New DropDownList With {.ID = "ddlBagage" & i}
  Dim KGselectie As ListItem
  KGselectie = New ListItem("Geen", "Geen")
  aantalKG.Items.Add(KGselectie)
  KGselectie = New ListItem("15kg", "15kg")
  aantalKG.Items.Add(KGselectie)
  KGselectie = New ListItem("25kg", "25kg")
  aantalKG.Items.Add(KGselectie)
  KGselectie = New ListItem("35kg", "35kg")
  aantalKG.Items.Add(KGselectie)
  aantalKG.AutoPostBack = True

  Dim lt As New Literal()
  Dim Endlt As New Literal()
  Dim space As New Literal()
  lt.Text = "<p>Persoon " + CStr(i) + ":"
  Endlt.Text = "</p> "
  space.Text = "<br />"

  bagageDIV.Controls.Add(lt)
  bagageDIV.Controls.Add(aantalKG)
  bagageDIV.Controls.Add(Endlt)
  bagageDIV.Controls.Add(space)
Next
Dim index As Integer = 1
If IsPostBack Then
  For Each key As String In Request.Form.Keys
    If key.Contains("txtVoornaam") Then
      Session("Voornaam" & index) = CType(Request.Form(key), String)
      index += 1
    End If
    If key.Contains("txtFamilienaam") Then
      Session("Familienaam" & index) = CType(Request.Form(key), String)
      index += 1
    End If
    If key.Contains("ddlBagage") Then
      Session("Bagage" & index) = CType(Request.Form(key), String)
      index += 1
    End If
  Next

End If

End Sub 结束子

You can use JavaScript for get selected value of dropdownlists. 您可以使用JavaScript获取下拉列表的选定值。 for example: 例如:

 var e = document.getElementById("aanhef "); var Selectedvalue = e.options[e.selectedIndex].value; 

Well, after testing some methodes and attributes and other stuff.... I found an easy solution for my problem (also thanks for helping @MaCron). 好吧,在测试了一些方法,属性和其他内容之后。...我找到了解决问题的简单方法(也感谢@MaCron的帮助)。

Here is the code: 这是代码:

For Each aantalKG As DropDownList In bagageDIV.Controls.OfType(Of DropDownList)()
  Session("Bagage" & index) = aantalKG.SelectedValue
  index += 1
Next

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM