2013-09-13 8 views
0

Я использую следующий код, чтобы попытаться получить список элементов, находящихся в списке. Таким образом, может быть любое количество элементов/строк, и они являются 10-значным числом. Когда я использую код ниже, «NPIListBox.Items.Count» возвращает только число 1, даже если в списке есть 3 элемента/строки. Любая идея, почему я могу получить точный счет при нажатии Next? Моя цель - передать все элементы в списке в сеанс, чтобы я мог использовать значения на другой странице. Благодаря!Невозможно вернуть элементы в списке

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 

    If IsPostBack Then 
      PopulateListBox() 
    End If 

End Sub 

Protected Sub cmdNext_Click(sender As Object, e As System.Web.UI.ImageClickEventArgs) Handles cmdNext.Click 
    Dim n As Integer = NPIListbox.Items.Count 
    Dim arr As String() = New String(n - 1) {} 
    For i As Integer = 0 To arr.Length - 1 
     arr(i) = NPIListbox.Items(i).ToString.Substring(NPIListbox.Items(i).ToString.Length - 10) 
    Next 
    Session("arr") = arr 

    Response.Redirect("~/frmDescription.aspx") 
End Sub 

Private Sub PopulateListBox() 

    If DoctorNameTextBox.Text = "" Then 

    Else 
     ' Get value from text box 
     Dim textBoxValue As String = Me.DoctorNameTextBox.Text 

     ' Create new item to add to list box 
     Dim newItem As New ListItem(textBoxValue) 

     ' Add item to list box and set selected index 
     NPIListbox.Items.Add(newItem) 
     NPIListbox.SelectedIndex = NPIListbox.Items.Count - 1 


    End If 

End Sub 

Окно списка заполняется с помощью следующего яваскрипта кода

<script language="javascript" type="text/javascript"> 
    function getSelected(source, eventArgs) { 
     var s = $get("<%=DoctorNameTextBox.ClientID %>").value; 

     var opt = document.createElement("option"); 
     opt.text = s.substring(s.length - 10); 
     opt.value = s.substring(s.length - 10); 

     document.getElementById('<%= NPIListbox.ClientID %>').options.add(opt); 

    } 

ответ

1

Поскольку вы добавляете варианты с JS, ваш сервер не знает этого. Когда вы отправляете значения обратно, они не существовали во время выполнения, поэтому он захватывает исходный счетчик (1).

Вам нужно будет использовать другой метод для получения добавленных значений, например: добавьте их в скрытое поле с runat='server' и возьмите значения из этого.

+0

Я не буду знать, сколько значений у меня будет, это может быть 20,30 и т. Д. Поэтому я не знаю, сколько скрытых полей для создания – user1342164

+0

Если я использую текстовое поле вместо списка, это можно сделать без скрытого поля? – user1342164

+1

@ user1342164 - Вам нужно всего лишь 1 скрытое поле, просто разделенное запятой или двоеточием, а затем на сервере разбить эту большую строку вверх! – tymeJV

Смежные вопросы