webForumDet fria alternativet

Problem med två dropdown

6 svar · 338 visningar · startad av Andy_K

Andy_KMedlem sedan juli 200330 inlägg
#1

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 :e 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
renholmMedlem sedan apr. 20012 266 inlägg
#2

Kan du skicka hela koden, dvs page_load osv.

Andy_KMedlem sedan juli 200330 inlägg
#3

Här kommer koden.

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
DinoMedlem sedan sep. 20011 914 inlägg
#4

Koden för submitknappen är nog nödvändig att du visar oxå.

Välkommen till webForum. :)

Andy_KMedlem sedan juli 200330 inlägg
#5

Ok, får skylla på min dumma kompis som sa att de inte skulle behövas :e
Och tack för välkommnandet :birp

Private Sub btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click
        Dim strSQL As String

        strSQL = "INSERT INTO products (customerId, typeId, subCategoryId, title, description, url) VALUES " & _
"(1, " & CInt(AdType.SelectedIndex) & ", " & SubCategories.SelectedItem.Value & ",'" & adTitle.Text & "' ,'" & adBody.Text & "' ,'" & adUrl.Text & "')"
        Response.Write(strSQL)
        Response.End()

    End Sub
DinoMedlem sedan sep. 20011 914 inlägg
#6

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
Andy_KMedlem sedan juli 200330 inlägg
#7

Tack, nu funkar de iaf! :)

136 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)