By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
424,853 Members | 1,534 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 424,853 IT Pros & Developers. It's quick & easy.

listbox bound to arraylist no changing values when values in arraylist are added or deleted

P: n/a
Hi all,

I have a listbox that is complex bound by an arraylist. The problem is that
when I delete an object from the arraylist, the listbox does not reflect
those changes. I tried refreshing the listbox with no luck and, because it
is already bound, I can't just delete the item directly from the listbox
without an error (because it already has a datasource, you are not allowed
to delete/add anything to the listbox directly).

The application basically is doing nothing but a dual listbox populator
(values in the right listbox are sent to the left with an "add" or an "add
all" button - and vice-versa with "remove" and "Remove all"). Instead of
using datatables, it uses arraylists to keep track of objects. Because the
objects will ultimately contain more than 1 item, I can't do a simple
binding (I wish MS did not ruin the listbox).
If anyone has seen a dual listbox using arraylists (instead of datatables),
please post a link or code .

Private alRegionNames As New ArrayList

Private alSelectedRegionNames As New ArrayList

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

loadDBRegionNames()

End Sub

Private Sub loadDBRegionNames()

alRegionNames = SalesRegionsDB.GetRegionNamesActiveAL 'returns an
arraylist of SalesRegionDD objects

lstRegionNames.DisplayMember = "reg_name"

lstRegionNames.ValueMember = "reg_idx"

lstRegionNames.DataSource = alRegionNames 'this listbox is bound to the
arraylist, so changes to the arraylist should reflect in the listbox, but
they do not!

lstSelectedRegionNames.DisplayMember = "reg_name"

lstSelectedRegionNames.ValueMember = "reg_idx"

End Sub

Private Sub Add() 'moves items from the right listbox to the left listbox

If lstRegionNames.SelectedIndex < 0 Then Return

Dim sr As New SalesRegionDD

sr = lstRegionNames.SelectedItem

Me.lstSelectedRegionNames.Items.Add(sr)

Me.TextBox1.Text = sr.reg_idx

Me.alRegionNames.Remove(sr)

End Sub

Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnAdd.Click

Me.Add()

End Sub

Here is the SalesRegionDD class (DD stands for dropdown in case you were
wondering - this is reused in other parts of the app for dropdowns):

Public Class SalesRegionDD

Private _reg_idx As String

Private _reg_name As String

Public Sub New() 'nothing happens here, yet

End Sub

Public Property reg_idx() As String

Get

Return _reg_idx

End Get

Set(ByVal Value As String)

_reg_idx = Value

End Set

End Property

Public Property reg_name() As String

Get

Return _reg_name

End Get

Set(ByVal Value As String)

_reg_name = Value

End Set

End Property

End Class

If anyone has any insight on what I am doing wrong or if this is another MS
DotNet bug I am wasting my time chasing, please let me know. I've spent an
entire week trying to do a simple ping-pong dual listbox (driven by a
database) bound by arraylists.
A dual listbox is such a common item in DB apps, I can't believe that no one
has done one before in VB.Net (I spent an afternoon at the bookstore
looking for an example with no luck).

Help!

TIA

Dave
Nov 21 '05 #1
Share this question for a faster answer!
Share on Google+

This discussion thread is closed

Replies have been disabled for this discussion.