Я считаю, что основная проблема заключается в следующем: параметры ListBox хранятся в состоянии просмотра страницы. Когда вы используете клиентский javascript / jquery для изменения содержимого списка, эти изменения не отражаются в состоянии просмотра. Таким образом, когда вы выполняете обратную передачу, ASP.NET использует представление для создания списков для вашего кода, и ваши изменения на стороне клиента теряются.
Один из способов решения этой проблемы - манипулирование содержимым списков с помощью обратной передачи, а не на стороне клиента (javascript / jquery). Делая это таким образом, все изменения в списках включаются в представление состояния и, таким образом, остаются согласованными для каждой обратной передачи.
Я большой поклонник jquery (гораздо больше, чем постбэков или MS-Ajax / частичных постбэков), поэтому я полностью понимаю, что этот подход может быть не очень привлекательным. К сожалению, это единственный, о котором я могу думать прямо сейчас. Может быть, другие stackoverflow'ы будут иметь лучшие альтернативы.