---
title: "OnSelectedIndexChanged"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/65611-onselectedindexchanged"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "cyprys"
published: "2003-01-20T23:50:34.000Z"
updated: "2003-01-22T11:41:28.000Z"
replies: 6
views: 288
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/65611-onselectedindexchanged"
---

# OnSelectedIndexChanged

## #1 — cyprys, 2003-01-20T23:50Z

Jag har ett problem med att en sub körs en gång för mycket.
Jag har 2 st listboxar brevid varrandra.
När man ändrar värde i den första så fylls den andra på med en massa listitems beroende på vad man valde i den första.(FillUnderGenresClick()) Där är även autopostback = true och jag tror det är där felet ligger. Men om jag inte sätter det till true så kör den inte fyllningen av andra listboxen över huvud taget.

Hur som helst när jag sedan valt värde ur båda listboxarna och trycker på button1 så kör den tydligen samma sub igen ändå och fyller där på listbox2 igen så att inget värde kommer ur listbox2.
Detta kör ju igång min requiredfieldvalidator på listbox2.

**Hur kör jag InsertBookInfo() utan att FillUnderGenresClick() körs ändå?**

```
Presentationslagret
---------------------------------
<asp:ListBox 
Runat="server" 
ID="f_genre1" 
DataTextField="col_headgenre" 
DataValueField="ID" 
SelectionMode="Single" 
Rows="10" 
Width="170" 
OnSelectedIndexChanged="FillUnderGenresClick" AutoPostBack="True">
</asp:ListBox>

<asp:ListBox 
Runat="server" 
ID="f_genre2" 
DataTextField="col_genre" 
DataValueField="ID" 
SelectionMode="Single"
Rows="10" 
Width="170">
</asp:ListBox>

<asp:Button 
ID="Button1" 
Runat="server" 
Text="Ladda upp" 
Enabled="False" 
OnClick="InsertBookInfo">
</asp:Button>

Code Behindlagret
---------------------------------
Sub InsertBookInfo(ByVal sender As Object, ByVal e As EventArgs)
        Dim title As String = insert1(f_title.Text)
        Dim info As String = insert1(f_info.Text)
        Dim headgenre As String = f_genre1.SelectedItem.Value
        Dim undergenre As String = f_genre2.SelectedItem.Value
        Dim objBui As New BusinessL()
        objBui.InserBook(title, info, headgenre, undergenre)
End Sub

Sub FillunderGenresClick(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim objbui As New BusinessL()
        Dim ds As New DataSet()
        ds = objbui.ShowGenres(f_genre1.SelectedItem.Value)
        f_genre2.DataSource = ds
        f_genre2.DataBind()
        button1.Enabled = True
End Sub
```

Permalänk: https://www.webforum.nu/p/65611

## #2 — NETwork, 2003-01-21T11:16Z

Hm, är du säker på att den kör båda funktionerna!? Prova att skriva ut något i FillunderGenresClick (släng in en response.write bara) för att verifiera att det verkligen är så, den ska naturligtvis inte köras när du trycker på knappen.

Permalänk: https://www.webforum.nu/p/920831

## #3 — cyprys, 2003-01-21T14:24Z

När jag trycker på button1 för att köra InsertBookInfo() så kommer aldrig datan från listbox2 med till den subben.
Samma info som fylls på genom FillunderGenresClick().
Och när den fylls på genom FillunderGenresClick() så sätts ingenting som markerat såklart vilket skapar ett fel.

Jag har verifierat att den körs även när man trycker på button1. Och jag gjorde det ytterligare en gång nu. Det är därför jag undrar om den där autopostback är det som spökar?

Permalänk: https://www.webforum.nu/p/920964

## #4 — P, 2003-01-21T14:29Z

Hmm har inte läst så noga men kan det ha något att göra med att datan "uppdateras".
lägg in denna kod:

```
If Not (IsPostBack)
                BindGrid() ' Funktionen som binder datan!
            End If
```

Permalänk: https://www.webforum.nu/p/920973

## #5 — NETwork, 2003-01-21T15:01Z

Du har inte stängt av viewstaten?

En dålig lösning annars är ju att lägga en ifsats runt koden i InsertBookInfo och kolla om f_genre2 innehåller något, om den gör det hoppar du ur funktionen innan den kör någon kod där. Typ nåt sånt här (kan inte vb)

```
Sub FillunderGenresClick(ByVal sender As Object, ByVal e As EventArgs)
  if(f_genre2.Items.Count>0)
    return;
End Sub
```

Permalänk: https://www.webforum.nu/p/921002

## #6 — cyprys, 2003-01-21T15:10Z

Problemet med att lägga if-satser i bindningssubben är att det ska kunna köras även något redan är valt i listbox2.
Det ska ju uppdateras beroende på vad man valt i listbox1.
Samma sak gäller nästan page.ispostback.
Eftersom man kan välja ur listbox1 flera gånger, byt val d.v.s, så måste fyllningen kunna ske flera gånger.

Jag har hur som helst tänkt på båda lösningarna tidigare.

Problemet är helt enkelt **varför** FillunderGenresClick() kör överhuvudtaget när man trycker på knappen.

Permalänk: https://www.webforum.nu/p/921009

## #7 — cyprys, 2003-01-22T11:41Z

Har ännu inte lyckats lösa det.
Kan man inte kolla vad det är man trycker på för att posta om sidan?
Alltså om man trycker på knappen så sätter man en if-sats i fillundergenres() om att det inte ska köras. 
Eller har nån kommit på varför den körs över huvud taget?

Permalänk: https://www.webforum.nu/p/924679

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/65611-onselectedindexchanged
