【问题标题】:Cannot retrieve the values from multiple selection in 1 Listbox VB.net无法从 1 个列表框 VB.net 中的多项选择中检索值
【发布时间】:2016-05-22 18:05:27
【问题描述】:

我想检索列表框中当前选定项目的值,并且每当用户选择更多项目时,这些项目的价格总和将显示在标签中,例如:用户从列表框中选择 2 个电话名称和他们的价格总和将显示在标签 中(它仅适用于用户选择的第一个项目,但忽略其他所有选择,当用户选择一个项目时它不起作用它只在我显示价格时按一个按钮),这是我尝试过的:

Partial Class PickItems
Inherits System.Web.UI.Page

Dim sum As Integer = 0
Protected Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged

    sum = sum + CInt(ListBox1.SelectedValue)
    Label1.Text = sum.ToString()


End Sub

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
    Label2.Text = Request.QueryString("Name").ToString()


End Sub End Class

这是列表框代码 <asp:ListBox ID="ListBox1" runat="server" SelectionMode="Multiple" DataSourceID="SqlDataSource1" DataTextField="PhoneName" DataValueField="PhonePrice"></asp:ListBox>

下面是页面的样子: 我还需要将选定的项目从这个页面移动到下一页(就像我对 Request.QueryString("Name... .) 任何帮助将不胜感激!

【问题讨论】:

    标签: asp.net vb.net listbox


    【解决方案1】:

    如果你想要一个总和,你需要循环到每个选定的索引来计算总和。

    Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged
        sum = 0 'reset sum to 0
        For Each I As Integer In ListBox1.GetSelectedIndices
            Dim CurrentItem As ListItem = ListBox1.Items(I)
            sum += CInt(CurrentItem.Value) 
        Next
    End Sub
    

    请注意,要使 SelectedIndexChanged 事件起作用,您需要将列表框的 AutoPostback 属性设置为 true。

    AutoPostBack="True"
    

    【讨论】:

    • 我在 Next 之后添加了 'Label1.Text = sum' 但无论选择什么项目,总和都是 0...我怎样才能让它显示正确的总和?
    • 我还将代码添加到 onclick 按钮事件,因为 selectedindexchanged 不起作用并更新标签,只有按下按钮才会在 Label1 中显示总和。
    • 如果您希望它在列表框选择更改时执行,您需要在列表框代码中添加 AutoPostBack="True" 以便调用该事件。否则,不调用 SelectedIndexChanged。
    • 是的,但是当我现在点击任何项目时页面会刷新,所以我不能选择超过 1 个项目。
    • 页面刷新,但您没有丢失所选项目,因此可以选择多个。更干净的方法是对服务器使用 webapi 请求,而不是使用 Javascript 更新值。这样,您就可以避免页面刷新和单击按钮,并且您可以将更新后的值添加到标签中。这就是我要走的路。你可以在这里看到一个例子:techfunda.com/howto/304/update-record-using-web-api
    猜你喜欢
    • 2014-11-20
    • 1970-01-01
    • 2015-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多