Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    SelectedIndexChanged in dropdownlist

    Ho 2 dropdownlist.
    Vorrei che una volta selezionato un valore dalla prima dropdownlist, la seconda dropdownlist visualizzasse tutti i valori presi dal db in base al valore selezionato nella prima.

    Per il momento ho gestito le 2 dropdownlist in modalità edit:

    Private Sub DataGrid1_EditCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs ) Handles DataGrid1.EditCommand


    label1 = DataGrid1.Items(e.Item.ItemIndex).Cells(0).FindCon trol("label1")
    LabelSUB = DataGrid1.Items(e.Item.ItemIndex).Cells(5).FindCon trol("LabelSUB")

    DataGrid1.EditItemIndex = e.Item.ItemIndex
    DataGrid1.DataBind()

    DCAT = DataGrid1.Items(e.Item.ItemIndex).Cells(0).FindCon trol("DCAT")

    DCAT.DataBind()
    DCAT.SelectedIndex = DCAT.Items.IndexOf(DCAT.Items.FindByText(label1.Te xt))

    ' inizio procedura seconda dropdownlist sub_categoria

    Dim select3 As New String("SELECT DISTINCT sub_categoria FROM tblAttivita WHERE categoria='" & DCAT.SelectedItem.Value & "'")
    Dim OleDbDataAdapter3 As New System.Data.OleDb.OleDbDataAdapter(select3, conn)
    Dim data_sub As New DataSet()

    OleDbDataAdapter3.Fill(data_sub, "tblAttivita")


    DSUB = DataGrid1.Items(e.Item.ItemIndex).Cells(5).FindCon trol("DSUB")
    DSUB.DataSource = data_sub
    DSUB.DataTextField = "sub_categoria"
    DSUB.DataValueField = "sub_categoria"
    DSUB.DataBind()

    DSUB.SelectedIndex = DSUB.Items.IndexOf(DSUB.Items.FindByText(LabelSUB. Text))

    End Sub

  2. #2

    cercherò di essere più chiaro..

    Ho la mia dropdownlist DCAT:
    <aspropDownList runat="server" DataSource='<%# Dataset21 %>' DataMember="tblAttivita" DataTextField="CATEGORIA" DataValueField="CATEGORIA" ID="DCAT" AutoPostBack="true" OnSelectedIndexChanged="DCAT_SelectedIndexChanged" >
    </aspropDownList>


    La funzione:
    Sub DCAT_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DCAT.SelectedIndexChanged
    Dim select3 As New String("SELECT DISTINCT sub_categoria FROM tblAttivita WHERE categoria='" & DCAT.SelectedItem.Value & "'")
    Dim OleDbDataAdapter3 As New System.Data.OleDb.OleDbDataAdapter(select3, conn)
    Dim data_sub As New DataSet()

    OleDbDataAdapter3.Fill(data_sub, "tblAttivita")

    DSUB.DataSource = data_sub
    DSUB.DataTextField = "sub_categoria"
    DSUB.DataValueField = "sub_categoria"
    DSUB.DataBind()
    End Sub

    DCAT E DSUB sono così dichiarate:
    Protected WithEvents DCAT As System.Web.UI.WebControls.DropDownList
    Protected WithEvents DSUB As System.Web.UI.WebControls.DropDownList


    Il problema è che non appena si scatena l'evento SelectedIndexChanged
    mi da un errore "Object reference not set to an instance of an object" in corrispondenza di DCAT.SelectedItem.Value
    Da altre prove ho visto che nemmeno la dropdownlist DSUB viene istanziata.
    Quello che voglio è semplicemente cliccare su un valore della prima dropdownlist e popolare la seconda dropdownlist con valori selezionati da DB in relazione al primo valore.

  3. #3
    sei sicuro che DCAT abbia un valore selezionato? prova a metterci un punto di interruzione e vedere se DCAT è istanziato e se e instanziato anche DCAT.SeletedValue

  4. #4

    infatti non è istanziato

    però non ho la minima idea di come e dove istanziarlo,
    scusami ma ho appena cominciato con ASP.NET

  5. #5
    non è istanizato DCAT o il selectedvalue?

  6. #6

    DCAT

    DCAT non è istanziato e di conseguenza nemmeno DCAT value.

    Ti posto la parte fondamentale del codice, così magari mi dici anche se sto procedendo in modo corretto.


    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    With DataGrid1
    .AllowPaging = True
    .PagerStyle.Mode = PagerMode.NumericPages
    .PageSize = 5
    .PagerStyle.PageButtonCount = 5
    End With

    If IsPostBack Then
    dataset11 = CType(Session("dataset"), DataSet1)
    dataset21 = CType(Session("dataset2"), DataSet2)
    Else
    ' dataset11 select su tutti i campi per popolare datagrid1
    ' dataset21 select su campo categoria (distinct) per
    ' popolare dropdown DCAT

    oleDbDataAdapter1.Fill(dataset11, "tblAttivita")
    oleDbDataAdapter2.Fill(dataset21, "tblAttivita")
    Session("dataset") = dataset11
    Session("dataset2") = dataset21
    DataBind()
    End If
    End Sub

    Private Sub DataGrid1_EditCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs ) Handles DataGrid1.EditCommand


    Label1 = DataGrid1.Items(e.Item.ItemIndex).Cells(0).FindCon trol("label1")
    LabelSUB = DataGrid1.Items(e.Item.ItemIndex).Cells(5).FindCon trol("LabelSUB")

    DataGrid1.EditItemIndex = e.Item.ItemIndex
    DataGrid1.DataBind()

    DCAT = DataGrid1.Items(e.Item.ItemIndex).Cells(0).FindCon trol("DCAT")

    DCAT.DataBind()
    DCAT.SelectedIndex = DCAT.Items.IndexOf(DCAT.Items.FindByText(Label1.Te xt))

    ' inizio procedura dropdownlist sub_categoria

    Dim select3 As New String("SELECT DISTINCT sub_categoria FROM tblAttivita WHERE categoria='" & DCAT.SelectedItem.Value & "'")
    Dim OleDbDataAdapter3 As New System.Data.OleDb.OleDbDataAdapter(select3, conn)
    Dim data_sub As New DataSet()

    OleDbDataAdapter3.Fill(data_sub, "tblAttivita")

    DSUB = DataGrid1.Items(e.Item.ItemIndex).Cells(5).FindCon trol("DSUB")
    DSUB.DataSource = data_sub
    DSUB.DataTextField = "sub_categoria"
    DSUB.DataValueField = "sub_categoria"
    DSUB.DataBind()

    DSUB.SelectedIndex = DSUB.Items.IndexOf(DSUB.Items.FindByText(LabelSUB. Text))

    End Sub


    Sub DCAT_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DCAT.SelectedIndexChanged

    Dim select3 As New String("SELECT DISTINCT sub_categoria FROM tblAttivita WHERE categoria='" & DCAT.SelectedItem.Value & "'")
    Dim OleDbDataAdapter3 As New System.Data.OleDb.OleDbDataAdapter(select3, conn)
    Dim data_sub As New DataSet()

    OleDbDataAdapter3.Fill(data_sub, "tblAttivita")

    DSUB.DataSource = data_sub
    DSUB.DataTextField = "sub_categoria"
    DSUB.DataValueField = "sub_categoria"
    DSUB.DataBind()
    End Sub

    ----------------------------------------------------------

    Ho provato a istanziare DCAT con
    DCAT = Page.FindControl("DCAT")
    ma niente.

  7. #7
    visto cosi non vedo niente di strano... la dichiarazione di DCAT nel codenheind c'è?

  8. #8

    Protected WithEvents DCAT As System.Web.UI.WebControls.DropDownList

    Forse dovrei trovare un modo analogo tipo:
    DCAT = DataGrid1.Items(e.Item.ItemIndex).Cells(0).FindCon trol("DCAT")

    però da utilizzare nella funzione DCAT_SelectedIndexChanged

  9. #9

  10. #10

    Ho risolto!!!!

    Se può interessare a qualcuno:

    Sub DCAT_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DCAT.SelectedIndexChanged

    Dim DCAT As DropDownList = sender

    Dim select3 As New String("SELECT DISTINCT sub_categoria FROM tblAttivita WHERE categoria='" & DCAT.SelectedItem.Value & "'")
    Dim OleDbDataAdapter3 As New System.Data.OleDb.OleDbDataAdapter(select3, conn)
    Dim data_sub As New DataSet()

    OleDbDataAdapter3.Fill(data_sub, "tblAttivita")

    Dim dg As DataGridItem = DCAT.Parent.Parent
    Dim DSUB As DropDownList = dg.FindControl("DSUB")

    DSUB.DataSource = data_sub
    DSUB.DataTextField = "sub_categoria"
    DSUB.DataValueField = "sub_categoria"
    DSUB.DataBind()


    End Sub

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.