2016-05-22 43 views
0

我想要檢索列表框中當前選定項目的值,並且每當用戶選擇更多項目時,這些項目的價格總和將顯示在標籤例如:用戶從列表框中選擇2個電話名稱,其價格總和將顯示在標籤(它僅適用於用戶選擇的第一個項目,但忽略所有其他選擇的項目,並且在用戶選擇項目時,我按下一個按鈕,它只顯示價格),這裏是我的嘗試:無法從1列表框中的多個選擇中檢索值VB.net

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>

這裏是頁的樣子:enter image description here我還需要選擇的項目從該頁面移動到下一個頁面(同像我一樣用的Request.QueryString(「名稱.... ) 任何幫助將不勝感激!

回答

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" 
+0

我在下一頁之後添加了'Label1.Text = sum',但總和爲0,無論選擇什麼項目...我怎樣才能得到它顯示正確的總和? – xTMx

+0

我還將代碼添加到onclick按鈕事件中,因爲selectedindexchanged不起作用並更新標籤,只按按鈕將在Label1中顯示總和。 – xTMx

+0

如果您希望在更改列表框選擇時執行它,則需要在列表框代碼中添加AutoPostBack =「True」,以便調用該事件。否則,不會調用SelectedIndexChanged。 –