【问题标题】:Not able to return items in listbox无法返回列表框中的项目
【发布时间】:2013-09-13 18:31:09
【问题描述】:

我正在使用下面的代码来尝试获取列表框中的项目列表。所以可能有任意数量的项目/行,它们是一个 10 位数字。当我使用“NPIListBox.Items.Count”下面的代码时,即使列表框中有 3 个项目/行,也只会返回 1 的计数。知道为什么单击 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

使用以下 javascript 代码填充列表框

 <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);

  }

【问题讨论】:

    标签: javascript asp.net vb.net


    【解决方案1】:

    由于您使用 JS 添加选项,因此您的服务器不知道这一点。当您发回这些值时,它们在运行时并不存在,因此它会获取原始计数 (1)。

    您必须使用另一种方法来获取新添加的值,例如:将它们添加到带有 runat='server' 的隐藏字段并从中获取值。

    【讨论】:

    • 我不知道我会有多少个值,可能是 20,30 等等...所以我不知道要创建多少隐藏字段
    • 如果我使用文本框而不是列表框,这可以在没有隐藏字段的情况下完成吗?
    • @user1342164 -- 您只需要 1 个隐藏字段,只需用逗号或冒号分隔,然后在服务器上,将大字符串拆分!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-02
    • 2018-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多