Help with displaying data selected in Listbox in Grid's cell.

Hi,

I am using a Listbox as a dropdown box in my Grid, how do I display rows selected in the Grid's cell separated by a comma?

For example if I select BEL, CAN and USA, I need to copy the data selected to the cell of the row selected in the following format: BEL,CAN,USA. and if I deselect USA, I need to only copy BEL,CAN to the cell of the selected row.  Below is the current code I'm using to display the listbox as a dropdown box, but I can't display rows selected in the cell.

 Private Sub C1TrueDBGrid45_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles C1TrueDBGrid45.Click
        With ListBox1
            .Left = Me.C1TrueDBGrid45.Left + Me.C1TrueDBGrid45.RecordSelectorWidth + Me.C1TrueDBGrid45.Splits(0).DisplayColumns(0).Width + Me.C1TrueDBGrid45.Splits(0).DisplayColumns(1).Width
            .Top = Me.C1TrueDBGrid45.Top + Me.C1TrueDBGrid45.RowTop(Me.C1TrueDBGrid45.Row)
            .Visible = True
            .Select()
        End With
    End Sub
vcharlesAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Jesus RodriguezIT ManagerCommented:
Create a listArrange an pass the values to the List

 Public ListOfSelected as String=String.Empty

Open in new window

And on the click event Clear and  go through the listItems of the Listbox and if is selected add it to the ListOfSelected, something like ListOfSelected+=ListItem+',' and when go through all the items then remember to remove the last "," on ListOfSelected. After that you got on ListOfSelected what you want.
vcharlesAuthor Commented:
Hi,

How do I modify the code below to remove the first "," and when I click on another column, the list box still appears, how do I make it invisible? Me.ListBox1.Visible = False is not working.

 Private Sub C1TrueDBGrid45_Scroll(ByVal sender As Object, ByVal e As C1.Win.C1TrueDBGrid.CancelEventArgs) Handles C1TrueDBGrid45.Scroll
        Me.ListBox1.Visible = False
    End Sub
    Dim tempstring As String

    Private Sub ListBox1_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.Leave
        tempstring = ""
        For Each item As Object In Me.ListBox1.SelectedItems
            tempstring += "," + item
        Next
        Me.C1TrueDBGrid45.Columns(1).Text = tempstring
        Me.ListBox1.Visible = False
    End Sub
Jesus RodriguezIT ManagerCommented:
To Remove the first Comma

tempstring = ""
        For Each item As Object In Me.ListBox1.SelectedItems
            tempstring += "," + item
        Next
if TempString.Text<>"" then
 TempString=right(TempString,len(tempString)-1)
End IF
Me.C1TrueDBGrid45.Columns(1).Text = tempstring
Me.ListBox1.Visible = False
CompTIA Security+

Learn the essential functions of CompTIA Security+, which establishes the core knowledge required of any cybersecurity role and leads professionals into intermediate-level cybersecurity jobs.

Jesus RodriguezIT ManagerCommented:
To disappear the ListBox Check the possible events on The TrueDbGrid
Try On the RowUpdated also remember that the ListBox Will be contained inside a Cell in the Gridview. You need to DirectCast the control to make it Invisible according to the row index that you're in.
 I think that you can Show/Hide the ListBox on the RowEditing/RowUpdated of each row and will be easy
vcharlesAuthor Commented:
Hi,

I tried your code but received the following two error in the code below

 If tempstring.Text <> "" Then  **** Text is not a member of string.
            tempstring = Right(tempstring, Len(tempstring) - 1)  ****Readonly property Right has no parameters and can not be indexed.
        End If
Jesus RodriguezIT ManagerCommented:
Sorry was my bad.. the code must be

if TempString<>"" then
 TempString=right(TempString,len(tempString)-1)
End IF
vcharlesAuthor Commented:
Hi,

I'm still getting the same error for "right"

****Read only property Right as integer has no parameters and can not be indexed.
Jesus RodriguezIT ManagerCommented:
I do this

Dim TempString = ""
        If TempString <> "" Then
            TempString = Microsoft.VisualBasic.Right(TempString, Len(tempString) - 1)
        End If

And it works for me like charm. I add Microsfot.VisualBasic to be sure that doesn't get in conflict with another Imported class

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
vcharlesAuthor Commented:
It works.

Thanks,

Victor
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Visual Basic.NET

From novice to tech pro — start learning today.