protected void Page_Load(object sender, EventArgs e)
{
   // Miejsce na kod uytkownika inicjalizujcy stron.
   Trace.Write("W metodzie Page_Load");
   if (!IsPostBack)
   {
      Trace.Write("Page_Load", "Bez Postback.");
      // Tworzymy dwuwymiarow tablic dla list.
      // Pierwsza kolumna zawiera tytuy ksiek.
      // Druga kolumna zawiera numery ISBN ksiek.
      string[,] books = {
         {"Programming C#","0596006993"},
         {"Programming .NET Windows Applications","0596003218"},
         {"Programming ASP.NET","0596004877"},
         {"WebClasses From Scratch","0789721260"},
         {"Teach Yourself C++ in 21 Days","067232072X"},
         {"Teach Yourself C++ in 10 Minutes","067231603X"},
         {"XML & Java From Scratch","0789724766"},
         {"Complete Idiot's Guide to a Career in Computer Programming","0789719959"},
         {"XML Web Documents From Scratch","0789723166"},
         {"Clouds To Code","1861000952"},
         {"C++: An Introduction to Programming","1575760614"},
         {"C++ Unleashed","0672312395"}
      };

      // W tym miejscu zapeniamy listy.
      int i;
      for (i = 0; i < books.GetLength(0); i++)
      {
         // Dodajemy zarwno warto Text, jak i Value.
         ddlBooks.Items.Add(new ListItem(books[i, 0], books[i, 1]));
      }
   }
}

protected void ddlBooks_SelectedIndexChanged(object sender, EventArgs e)
{
   // Wymuszenie wystpienia wyjtku.
   try
   {
      int a = 0;
      int b = 5 / a;
   }
   catch (System.Exception ex)
   {
      Trace.Warn("UserAction", "Wywoanie b=5/a", ex);
   }

   // Sprawdzamy, czy zosta zaznaczony jakikolwiek tekst.
   if (ddlBooks.SelectedIndex != -1)
   {
      lblDdl.Text = ddlBooks.SelectedItem.Text + " ---> ISBN: " +
         ddlBooks.SelectedItem.Value;
   }
}
