Я могу думать только о двух вопросах.
1.) Заполняете ли вы (привязку) к списку события page_load? если это так, то вам нужно сделать это только при первой загрузке страницы. Когда вы привязываетесь к элементу управления (или другим элементам управления), он сбрасывает выбранный индекс. Если viewstate включен, он сохранит исходный список.
2.) Теперь я не собираюсь предполагать, что вышеприведенное уже верно, поэтому я могу спросить, включено ли viewstate для родительского объекта этой страницы Если вы включите трассировку и посмотрите список управления страницами, вы сможете увидеть размер состояния просмотра для этого конкретного элемента. Если у него есть значение, то вы знаете, что вы правильно настраиваете viewstate. Если нет, то пройдите вверх по родительским элементам управления, чтобы увидеть, где заканчивается viewstate.
Viewstate необходимо для обнаружения обратной передачи, поэтому важно убедиться, что она работает правильно.
Теперь я программист VB.net и заметил, что в вашем сабвуфере, похоже, нет обработчика.
В vb.net мы обычно видим что-то вроде
Private Sub LinkButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LinkButton.Click
Единственный способ заставить событие правильно сработать - это включить его в кнопку, но вы, похоже, уже делаете это правильно. Возможно, вы захотите попробовать это так, как я изложил выше, и посмотрите, изменит ли это что-нибудь для вас.
Andrew