Witam
Tworzę aplikację webową w ASP.NET, która ma wyliczać wskaźniki funduszy pobranych z bazy. Napotkałem na taki problem, a mianowicie w jaki sposób za pomocą ListBoxa wybrać kilka funduszy i na nich przeprowadzać obliczenia? ListBox już mi działa, ale nie moge wybrać kilku funduszy(zaznacza się kilka ale działa tylko pierwszy)
Poniżej wklejam to co już działa:

public partial class Default5 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            WybierzFundusz();
            WybierzOkres();
        }
    }

    private void WybierzFundusz()
    {
        SqlConnection conn;
        SqlCommand comm;
        SqlDataReader reader;

        string connectionString = ConfigurationManager.ConnectionStrings["WynikiFunduszy"].ConnectionString;
        conn = new SqlConnection(connectionString);

        comm = new SqlCommand(
            "SELECT IDNazwaFunduszu, NazwaFunduszu FROM Fundusze", conn);

        try
        {
            conn.Open();
            reader = comm.ExecuteReader();

            ListBox1.DataSource = reader;
            ListBox1.DataValueField = "IDNazwaFunduszu";
            ListBox1.DataTextField = "NazwaFunduszu";
            ListBox1.DataBind();

            reader.Close();
        }
        /*
        catch
        {
        }
        */
        finally
        {
            conn.Close();
        }
    }

    private void WybierzOkres()

    {
        SqlConnection conn;
        SqlCommand comm;
        SqlDataReader reader;

        string connectionString = ConfigurationManager.ConnectionStrings["WynikiFunduszy"].ConnectionString;
        conn = new SqlConnection(connectionString);

        comm = new SqlCommand(
            "SELECT IDOkres, Okres FROM Okres", conn);

        try
        {
            conn.Open();
            reader = comm.ExecuteReader();

            okresDropDownList.DataSource = reader;
            okresDropDownList.DataValueField = "IDOkres";
            okresDropDownList.DataTextField = "Okres";
            okresDropDownList.DataBind();

            reader.Close();
        }
        finally
        {
            conn.Close();
        }
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        int rozmiar = 0;
        int i = 0;
        int j = 0;
        SqlConnection conn;
        SqlCommand zliczComm;
        SqlCommand tabComm;
        SqlDataReader reader;

        string connectionString = ConfigurationManager.ConnectionStrings["WynikiFunduszy"].ConnectionString;
        conn = new SqlConnection(connectionString);

        zliczComm = new SqlCommand(
            "SELECT COUNT (Wyniki)FROM BazaWyniki WHERE IDData IN" +
            "(SELECT IDData	FROM Data WHERE IDData IN" +
            "(SELECT IDData FROM DataOkres WHERE IDOkres IN" +
            "(SELECT IDOkres FROM Okres WHERE IDOkres = @IDOkres))) AND IDNazwaFunduszu IN" +
            "(SELECT IDNazwaFunduszu FROM Fundusze WHERE IDNazwaFunduszu = @IDNazwaFunduszu )", conn);

        zliczComm.Parameters.Add("@IDOkres", SqlDbType.Int);
        zliczComm.Parameters["@IDOkres"].Value = okresDropDownList.SelectedItem.Value;

        zliczComm.Parameters.Add("@IDNazwaFunduszu", SqlDbType.Int);
        zliczComm.Parameters["@IDNazwaFunduszu"].Value = ListBox1.SelectedItem.Value;

        tabComm = new SqlCommand(
            "SELECT Wyniki,IDData FROM BazaWyniki WHERE IDData IN" +
	        "(SELECT IDData	FROM Data WHERE IDData IN" +
            "(SELECT IDData FROM DataOkres WHERE IDOkres IN" +
            "(SELECT IDOkres FROM Okres WHERE IDOkres = @IDOkres))) AND IDNazwaFunduszu IN" +
            "(SELECT IDNazwaFunduszu FROM Fundusze WHERE IDNazwaFunduszu = @IDNazwaFunduszu )ORDER BY IDData ", conn);

        tabComm.Parameters.Add("@IDOkres", SqlDbType.Int);
        tabComm.Parameters["@IDOkres"].Value = okresDropDownList.SelectedItem.Value;

        tabComm.Parameters.Add("@IDNazwaFunduszu", SqlDbType.Int);
        tabComm.Parameters["@IDNazwaFunduszu"].Value = ListBox1.SelectedItem.Value;

        try
        {
            conn.Open();
            
            reader = tabComm.ExecuteReader();

            Repeater1.DataSource = reader;
            Repeater1.DataBind();
            reader.Close();
                    
            rozmiar = (int)zliczComm.ExecuteScalar();
            reader = tabComm.ExecuteReader();

            //Przekazuje do tablicy
            double[] tab = new double[rozmiar];
            while (reader.Read())
            {
                tab[i++] = (double)reader[0];
            }
            //

            //Oblicza stope zwrotu
            int rozmiarStopa = 0;
            rozmiarStopa = rozmiar - 1;
            double[] stopaTab = new double[rozmiarStopa];
            for (int w = 0; w < rozmiarStopa; w++)
            {
                stopaTab[w] = (tab[w + 1] - tab[w]) / tab[w];
            }

            

            //

            //Oblicza odchylenie standardowe
            double srednia = 0;
            double sumaKw = 0;
            double odchylenieSt = 0;
            srednia = stopaTab.Average();
            //Label4.Text = Convert.ToString(srednia);
            for (int z = 0; z < rozmiarStopa; z++)
            {
                sumaKw = sumaKw + Math.Pow((stopaTab[z] - srednia), 2);
            }
            odchylenieSt = Math.Sqrt(sumaKw / (rozmiarStopa - 1));
            //
            Label1.Text = Convert.ToString(odchylenieSt * 100) + "%";
            reader.Close();

</ort>