Visualizzazione dei risultati da 1 a 5 su 5

Discussione: DropDown in Datalist

  1. #1

    DropDown in Datalist

    Ciao ragazzi,
    Ho una drop down in un datalist: riesco apopolare la dropdown, ma non riesco a mostrare come selezionato il valore che attualmeente è settato.
    Vi prego ditemi cosa sbaglio che sto impazzendo.
    L'errore è questo:
    Object reference not set to an instance of an object.
    at archivio_det.DtlArchivioBound(Object obj, DataListItemEventArgs e) in D:\website\software\lafer\archivio_det.aspx.vb:lin e 43

    Il codebehind adesso è così(è unpò lungo, ma è molto semplice e spero potrete dargli cmq uno sguardo):
    codice:
    Imports System.Data
    Imports System.Data.OleDb
    
    Partial Class archivio_det
        Inherits System.Web.UI.Page
    
        Dim MYSQL, MYSQL2 As String
        Dim conn As Data.OleDb.OleDbConnection
        Dim MyDA, MyDA2 As Data.OleDb.OleDbDataAdapter
        Dim MyDS As DataSet
        Public id_archivio As String
        Protected MyDs2 As New DataSet
    
    
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    
            Carica_Archivio()
            Carica_Sup()
            Binda()
    
        End Sub
    
        Sub DtlArchivioEdit(ByVal obj As Object, ByVal e As DataListCommandEventArgs)
            DtlArchivio.EditItemIndex = e.Item.ItemIndex
            DtlArchivio.DataBind()
    
        End Sub
    
        Sub DtlArchivioAnnulla(ByVal obj As Object, ByVal e As DataListCommandEventArgs)
            DtlArchivio.EditItemIndex = -1
            DtlArchivio.DataBind()
    
        End Sub
    
        Sub DtlArchivioBound(ByVal obj As Object, ByVal e As DataListItemEventArgs)
            Try
                If e.Item.ItemType = ListItemType.EditItem Then
    
                    Dim DDLSupTemp As DropDownList
                    Dim ddlsupsel As String
                    ddlsupsel = CType(e.Item.FindControl("LblSup"), Label).Text
                    DDLSupTemp = CType(e.Item.FindControl("DDLSup"), DropDownList)
                    DDLSupTemp.SelectedIndex = DDLSupTemp.Items.IndexOf(DDLSupTemp.Items.FindByText(ddlsupsel))
    
                End If
    
            Catch ex As Exception
                lblerrore.Text = ex.Message & "
     " & ex.StackTrace
    
            End Try
    
        End Sub
    
        'Sub per caricamento Super Categoria
        Sub Carica_Sup()
            Try
    
                conn = CType(Session("Connessione"), Data.OleDb.OleDbConnection)
                conn.Open()
    
                MYSQL2 = "SELECT *FROM tab_sup_cat ORDER BY nome_sup_cat ASC"
                MyDA2 = New Data.OleDb.OleDbDataAdapter(MYSQL2, conn)
                MyDA2.Fill(MyDS2, "tab_sup_cat")
    
            Catch ex As Exception
                lblerrore.Text = "Errore rilevato: " & ex.Message
            Finally
    
                conn.Close()
    
            End Try
        End Sub
    
        Sub Carica_Archivio()
            Try
                id_archivio = Request.QueryString("pid")
    
                conn = CType(Session("connessione"), Data.OleDb.OleDbConnection)
                conn.Open()
    
                MYSQL = "SELECT tab_sup_cat.*, tab_cat.*, tab_sotto_cat.*, tab_archivio.*" & _
                        " FROM ((tab_sup_cat INNER JOIN tab_archivio" & _
                        " ON tab_sup_cat.ID_sup_cat = tab_archivio.id_sup_cat)" & _
                        " LEFT JOIN tab_cat" & _
                        " ON tab_cat.ID_cat = tab_archivio.id_cat)" & _
                        " LEFT JOIN tab_sotto_cat" & _
                        " ON tab_sotto_cat.ID_sotto_cat = tab_archivio.id_sotto_cat" & _
                        "  WHERE ID_archivio = " + id_archivio + "" & _
                        " ORDER BY tab_sup_cat.nome_sup_cat, tab_archivio.ragione ASC"
    
                MyDA = New Data.OleDb.OleDbDataAdapter(MYSQL, conn)
                MyDS = New DataSet()
                MyDA.Fill(MyDS, "tab_archivio")
    
    
            Catch ex As Exception
                lblerrore.Text = ex.Message & "
    " & ex.StackTrace
    
            Finally
                conn.Close()
            End Try
    
        End Sub
    
        Sub Binda()
            DtlArchivio.DataSource = MyDS
            DtlArchivio.DataMember = "tab_archivio"
            DtlArchivio.DataBind()
    
        End Sub
    
    End Class
    quindi nella pagina .aspx ho il datalist così:

    codice:
     <asp:Datalist
     SelectedItemStyle-BackColor="#cccc99"
     RepeatLayout=Table
     RepeatDirection=Vertical
     DataKeyField="ID_archivio"
     runat=server
     ID="DtlArchivio"
     OnEditCommand="DtlArchivioEdit"
     OnCancelCommand="DtlArchivioAnnulla"
     OnItemDataBound="DtlArchivioBound"
     >
    e l'editItemTemplate così:
    codice:
    <asp:Label ID="LblSup" Visible=true
                               runat=server Text='<%#Databinder.eval(Container.Dataitem, "nome_sup_cat") %>'></asp:Label>
    
                                <asp:DropDownList ID="DDLSupCat" runat=server
                                DataSource="<%# myds2 %>"
                                DataTextField="nome_sup_cat"
                                DataValueField="ID_sup_cat"
                                >
                                </asp:DropDownList>
    Ho provato anche a fare un semplice:
    codice:
    DDLSupTemp.Items.Add(New ListItem("dddd", "0"))
    ma mi restituisce sempre lo stesso errore.

    Vi prego ditemi come devo fare!!

  2. #2
    Ragazzi nessuno sa aiutarmi?!
    non riesco ad uscirne...

  3. #3
    Ma scusa un po' usi DDLSupTemp e un po' usi DDLSupCat ...

  4. #4
    Mentre aspettavo la risposta ero riuscito a beccare l'errore:
    DDLSupTemp = CType(e.Item.FindControl("DDLSup"), DropDownList)

    Ricercavo "DDLSup" invece che DDLSupCat....

    Adesso però è uscito un errore molto strano:
    quando clicco sul pulsante OnCancelCommand mi da questo errore qui:
    Both DataSource and DataSourceID are defined on 'DDLSupCat'. Remove one definition.

    Ma che signifca?
    Io non applico nessun DataSourceId a niente!!
    Da dove esce fuori questo errore?

    Sapresti aiutarmi?
    Grazie mille!

  5. #5
    ok ho risolto!
    Solito errore di esasperazione!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.