+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 9 su 9

Aggiungere Tag a elementi Lisbox

  1. #1
    bertoz non è in linea Scolaretto
    Post
    61
    Like Inviati  
    0
    Like Ricevuti  
    0
    Ciao a tutti,E' una cosa banale (Penso) ,ma non riesco a farla...
    Come faccio ad aggiungere un tag ad ogni elemento che aggiungo in una listbox???

    Da una query ad un database tiro fuori alcuni dati e li aggiungo ad una listbox,vorrei aggiungere anche un tag per ogni elemento aggiunto.
    Questo è il codice.

    Grazie

    Dim RicercaAll As New System.Data.SqlServerCe.SqlCeCommand("SELECT * FROM Articoli WHERE ARCODART = ('" & txtcerca.Text & "') ORDER BY ARCODART ASC", ConnSqlCe)
    
                ConnSqlCe.Open()
    
                Dim rs2 As Data.SqlServerCe.SqlCeResultSet = RicercaAll.ExecuteResultSet(Data.SqlServerCe.ResultSetOptions.Scrollable)
    
                RicercaAll.ExecuteReader()
    
                If rs2.HasRows = False Then
                    MsgBox("Articolo Non Presente")
                Else
    
                    Do While rs2.Read
                        If rs2.IsDBNull(0) = False Then
                            ARCODART = CStr(rs2.GetValue(0))
                            If InStr(ARCODART, "'", CompareMethod.Text) Then
                                ARCODART = ARCODART.Replace("'", "''")
                            End If
                        Else
                            ARCODART = "   "
                        End If
    
                        If rs2.IsDBNull(1) = False Then
                            ARDESART = CStr(rs2.GetValue(1))
                            If InStr(ARDESART, "'", CompareMethod.Text) Then
                                ARDESART = ARDESART.Replace("'", "''")
                            End If
                        Else
                            ARDESART = "   "
                        End If
    
                        If rs2.IsDBNull(2) = False Then
                            ARDESSUP = CStr(rs2.GetValue(2))
                            If InStr(ARDESSUP, "'", CompareMethod.Text) Then
                                ARDESSUP = ARDESSUP.Replace("'", "''")
                            End If
                        Else
                            ARDESSUP = "   "
                        End If
    
                        If rs2.IsDBNull(3) = False Then
                            ARUM = CStr(rs2.GetValue(3))
                            If InStr(ARUM, "'", CompareMethod.Text) Then
                                ARUM = ARUM.Replace("'", "''")
                            End If
                        Else
                            ARUM = "   "
                        End If
    
                        If rs2.IsDBNull(4) = False Then
                            ARLIS = CStr(rs2.GetValue(4))
                            If InStr(ARLIS, "'", CompareMethod.Text) Then
                                ARLIS = ARLIS.Replace("'", "''")
                            End If
                        Else
                            ARLIS = "   "
                        End If
    
                        If rs2.IsDBNull(5) = False Then
                            ARCODIVA = CStr(rs2.GetValue(5))
                            If InStr(ARCODIVA, "'", CompareMethod.Text) Then
                                ARCODIVA = ARCODIVA.Replace("'", "''")
                            End If
                        Else
                            ARCODIVA = "   "
                        End If
    
                        If rs2.IsDBNull(6) = False Then
                            ARGRUMER = CStr(rs2.GetValue(6))
                            If InStr(ARGRUMER, "'", CompareMethod.Text) Then
                                ARGRUMER = ARGRUMER.Replace("'", "''")
                            End If
                        Else
                            ARGRUMER = "   "
                        End If
    
                        If rs2.IsDBNull(7) = False Then
                            ARCAT = CStr(rs2.GetValue(7))
                            If InStr(ARCAT, "'", CompareMethod.Text) Then
                                ARCAT = ARCAT.Replace("'", "''")
                            End If
                        Else
                            ARCAT = "   "
                        End If
    
                        Listbox1.Items.Add(ARDESART)
    
                    Loop
    
                    ConnSqlCe.Close()
    

  2. #2
    L'avatar di cippalippa
    cippalippa non è in linea Topo di biblioteca
    Post
    2,526
    Like Inviati  
    0
    Like Ricevuti  
    0
    Hai provato:
    ListBox1.Tag = "..."
    A me funziona
    Ultima modifica di cippalippa; 19-07-2007 12:41 
    ℹ️ Leggi di più su cippalippa ...

  3. #3
    bertoz non è in linea Scolaretto
    Post
    61
    Like Inviati  
    0
    Like Ricevuti  
    0
    Si,ho provato però mi aggiunge lo stesso tag per tutti gli elementi,io invece vorrei che il tag corrispondesse ad 1 dato preso da 1 query,e quindi diverso per ogni elemento della listbox

  4. #4
    L'avatar di alextyx
    alextyx non è in linea Moderatore Globale
    Post
    2,600
    Like Inviati  
    0
    Like Ricevuti  
    0
    Gli item del listbox non sono oggetti a sè stanti come quelli del listview e non espongono la proprietà TAG. Passa al listview!
    ℹ️ Leggi di più su alextyx ...

  5. #5
    Post
    1,901
    Blogs
    21
    Like Inviati  
    14
    Like Ricevuti  
    13
    Quote Originariamente inviato da alextyx Visualizza il messaggio
    Gli item del listbox non sono oggetti a sè stanti come quelli del listview e non espongono la proprietà TAG. Passa al listview!
    Ciao,

    ...lungi da me il pensiero di mettere in dubbio la bontà del suggerimento
    proposto da Alextyx,

    ma vorrei proporre una soluzione alternativa che 'volendo mantenere a forza' la ListBox spero offra spunti di riflessione per allontanarsi dal modo di pensare in VB6 ed avvicinarsi invece a quello del .NET

    ...sia chiaro che come già detto in altre occasioni anche io mi sto avvicinando a questo nuovo mondo da poco per cui osservazioni e correzioni sono sempre le benvenute.

    Ciò premesso espongo una soluzione che volendo mantere 'a forza' la listbox,
    si base sulle seguenti osserzioni:

    1) il metodo ListBox.items.Add accetta come argomento un oggetto che
    come tale può essere qualsiasi cosa compresa quindi anche una mia custom class

    2) Nessuno mi vieta di inserire nella mia custom class tutti i tag e le altre informazioni/metodi che più mi fanno comodo

    ...quindi , invece di aggiungere (Add) alla listbox una semplice stringa ,perchè non aggiungere un oggetto con incapsulato tutto ciò che mi occorre...

    ...per esempio un'istanza della seguente classe (N.B. notare il ...stendiamo un velo pietoso...)

        Private Class cMyItem
    
            Public Sub New(ByVal sMyVisibleTag As String, ByVal iMyIDTag As Integer)
                MyVisibleTag = sMyVisibleTag
                MyIDTag = iMyIDTag
            End Sub
    
            '...stendiamo un velo pietoso sul public e la mancanza del Get/Set delle proprietà visto che è solo un esempio
    
            Public MyVisibleTag As String
            Public MyIDTag As Integer
        End Class
    
    ...se provo a farlo ho l'inconveniente di vedere nella listbox qualcosa come :
    "<dipende da dove la definisco>+cMyItem" perchè essa (la listbox ) visualizza
    il ToString predefinito dell'oggetto aggiunto.

    La soluzione me la fornisce il .NET stesso che mi pemette di ridefinire il metodo ToString della mia custom class.

    Un esempio testato con il VS2005 (...provate a remmare l'overrides di ToString):
    in cui Form1 ha :
    - Button1 per riempire la ListBox1
    - Button2 per mostrare in Textbox1 il 'Tag' corrispondente all'istanza della custom class (CMyItem) selezionata.


    
    Public Class Form1
    
        Private Class cMyItem
            Public Sub New(ByVal sMyVisibleTag As String, ByVal iMyIDTag As Integer)
                MyVisibleTag = sMyVisibleTag
                MyIDTag = iMyIDTag
            End Sub
    
            '...stendiamo un velo pietoso sul public e la mancanza del Get/Set delle proprietà
            Public MyVisibleTag As String
            Public MyIDTag As Integer
    
           '
            Public Overrides Function Tostring() As String
                Return MyVisibleTag & " - " & MyIDTag
            End Function
    
        End Class
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    
            ListBox1.Items.Clear()
            'aggiungo alla listbox le istanze delle cMyItem
            AddMyCustomItem()
    
        End Sub
    
    
        Private Sub AddMyCustomItem()
    
            For j As Integer = 1 To 5
                ListBox1.Items.Add(New cMyItem("MyVisibleTag_" & CStr(j), j))
            Next
    
        End Sub
    
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            With DirectCast(ListBox1.SelectedItem, cMyItem)
                Me.TextBox1.Text = "MyIDTag=" & .MyIDTag.ToString & "  (" & .MyVisibleTag & ")"
            End With
        End Sub
    
    End Class
    
    ℹ️ Leggi di più su sspintux ...

  6. #6
    L'avatar di alextyx
    alextyx non è in linea Moderatore Globale
    Post
    2,600
    Like Inviati  
    0
    Like Ricevuti  
    0
    ma vorrei proporre una soluzione alternativa che 'volendo mantenere a forza' la ListBox spero offra spunti di riflessione per allontanarsi dal modo di pensare in VB6 ed avvicinarsi invece a quello del .NET
    La propoposta è carina.
    Non l'ho provata ma non ho motivi di dubitare che funzioni, almeno ad una prima occhiata.
    Io uso spesso un qualcosa di vagamente simile col listview, nel senso che adopero il TAG dei vari item per appoggiarvi una classe custom con le proprietà della quale vado poi a riempire le colonne. In genere tale classe è parte di una collezione di classi (es. ClasseContatto può essere contenuta nella collezione Contatti della ClasseRubrica). Ovviamente, aggiornando le proprietà della classe che sta nel TAG di un item, dato che si lavora sempre sullo stesso oggetto, anche se 'puntato' da una direzione diversa, si aggiornano anche quelle nella collezione Contatti della ClasseRubrica (riferendomi all'esempio). In effetti imparare a destreggiarsi con le possibilità offerte dagli oggetti è oltremodo utile. Io che pure NON provengo da VB6, ma che comunque ho scoperto la OOP con VB.Net, dopo un primo momento di smarrimento, ho capito perchè c'è tanto entusiasmo intorno a questo modo di programmare.
    ℹ️ Leggi di più su alextyx ...

  7. #7
    cyano non è in linea Scolaretto
    Post
    80
    Like Inviati  
    0
    Like Ricevuti  
    0
    Sono concorde con sspintux sulla scelta di utilizzare una classe che eredita da object (tutto eredita da object).
    Manca però nel suo esempio l'override di ToString
    ℹ️ Leggi di più su cyano ...

  8. #8
    Post
    1,901
    Blogs
    21
    Like Inviati  
    14
    Like Ricevuti  
    13
    Quote Originariamente inviato da cyano Visualizza il messaggio
    Sono concorde con sspintux sulla scelta di utilizzare una classe che eredita da object (tutto eredita da object).
    Manca però nel suo esempio l'override di ToString
    ...leggi meglio e vedrai che c'é
    ℹ️ Leggi di più su sspintux ...

  9. #9
    L'avatar di alextyx
    alextyx non è in linea Moderatore Globale
    Post
    2,600
    Like Inviati  
    0
    Like Ricevuti  
    0
    Public Class Form1

    Private Class cMyItem
    Public Sub New(ByVal sMyVisibleTag As String, ByVal iMyIDTag As Integer)
    MyVisibleTag = sMyVisibleTag
    MyIDTag = iMyIDTag
    End Sub

    '...stendiamo un velo pietoso sul public e la mancanza del Get/Set delle proprietà
    Public MyVisibleTag As String
    Public MyIDTag As Integer

    '
    Public Overrides Function Tostring() As String
    Return MyVisibleTag & " - " & MyIDTag
    End Function

    End Class
    c'è, c'è...avevo controllato!
    ℹ️ Leggi di più su alextyx ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Aggiungere elementi da un combobox ad una listbox
    Da jolly nel forum Visual Basic 6
    Risposte: 27
    Ultimo Post: 08-09-2010, 23:36
  2. Risolto: Elementi ListBox
    Da Rhapsody nel forum Visual Basic .Net
    Risposte: 4
    Ultimo Post: 21-03-2010, 16:56
  3. Array con moltissimi elementi
    Da luciano.net nel forum Visual Basic .Net
    Risposte: 7
    Ultimo Post: 13-05-2008, 22:38
  4. Elementi su piu' righe
    Da William nel forum PHP
    Risposte: 3
    Ultimo Post: 10-03-2006, 12:05
  5. LisBox
    Da sly185 nel forum Visual Basic 6
    Risposte: 2
    Ultimo Post: 29-01-2004, 11:51