Sitter med ett litet problem med två dropdownlistor. Valet i den första dropdownen generar alternativ i den andra dropdownen, detta fungerar utan problem.
Problemet är när man ska skicka formuläret med en submit-knapp, då får jag endast med rätt värde från den första dropdownen, värdet i den andra dropdownen "nollställs" d.v.s. den får de första värdet i listan.
Jag antar att det är något postback-problem, men jag kan inte använda mig av if Not page.ispostback eftersom detta gör att den första dropdownen inte kan databinda den andra.
Lite krångligt att förklara så jag skickar med koden för den andra dropdownen...
Private Sub Categories_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Categories.SelectedIndexChanged
'
' ------ Datafyller dropdownmeny2 för val av UNDERKATEGORI ----------
'
Dim dtrSubCategorys As OleDbDataReader
Dim strSQL As String
Dim i As New SQLConn()
Try
strSQL = "SELECT subCategoryName, subCategoryId FROM subCategorys WHERE categoryId = " & Categories.SelectedIndex
i.DBOpen()
Dim dropdown2 As OleDbDataReader = i.returnDataReader(strSQL)
SubCategories.DataSource = dropdown2
SubCategories.DataTextField = "subCategoryName"
SubCategories.DataValueField = "subCategoryId"
SubCategories.DataBind()
SubCategories.Items.Insert(0, New ListItem("-Underkategori-", -1))
SubCategories.Visible = True
Finally
i.DBClose()
End Try
End Sub
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'
' ------ Datafyller dropdownmeny1 för val av KATEGORI ----------
'
Dim dtrCategories As OleDbDataReader
Dim strSQL As String
Dim i As New SQLConn()
Try
strSQL = "SELECT categoryName, categoryId FROM categorys"
i.DBOpen()
Dim dropdown1 As OleDbDataReader = i.returnDataReader(strSQL)
Categories.DataSource = dropdown1
Categories.DataTextField = "categoryName"
Categories.DataValueField = "categoryId"
Categories.DataBind()
Categories.Items.Insert(0, New ListItem("-Kategori-", -1))
Finally
i.DBClose()
End Try
Dim dtrAdTypes As OleDbDataReader
Try
strSQL = "SELECT name, typeId FROM markettypes"
i.DBOpen()
dtrAdTypes = i.returnDataReader(strSQL)
AdType.DataSource = dtrAdTypes
AdType.DataTextField = "name"
AdType.DataValueField = "typeId"
AdType.DataBind()
Finally
i.DBClose()
End Try
End Sub
Gjorde detta och då får jag fram värderna utan problem.
[b]I .aspx[/b]
<asp:DropDownList ID="Categories" AutoPostBack="true" OnSelectedIndexChanged="Categories_SelectedIndexChanged" Runat="server"/>
<asp:DropDownList ID="SubCategories" Runat="server"/>
<asp:Button ID="btnSend" OnClick="btnSend_Click" Text="Ta fram" Runat="server" />
-----------------------
[b]I code-behind[/b]
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
if not ispostback then
binddata()
end if
end sub
sub binddata()
'fyll första dropdownen
end sub
Private Sub Categories_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Categories.SelectedIndexChanged
'fyll andra dropdownen
end sub
Private Sub btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click
Response.Write("<li>" + Categories.SelectedIndex)
Response.Write("<li>" + SubCategories.SelectedItem.Value)
end sub