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>