Try:
protected void ddlNumbers_SelectedIndexChanged(object sender, EventArgs e)
{
int count;
string text = ddlNumbers.SelectedItem.Text;
if (!int.TryParse(text, out count))
{
Trace.Warn("Numbers", string.Format("Cannot parse '{0}' as an integer.", text));
}
for (int i = 0; i < count; i++)
{
...
Turn on page-level tracing (
<%@ Page Trace="True" ... %>
) and look for the warning message, which will tell you what value it's failing to parse.
You'll also want to wrap your binding code in a
if (!IsPostBack) { ... }
block. At the moment, you're re-binding the list every time the page posts back to the server.
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindNumbersList();
}
}
private void BindNumbersList()
{
int[] numbers = { 1, 2, 3, 4, 5, 6 };
ddlNumbers.DataSource = numbers;
ddlNumbers.DataBind();
ddlNumbers.Items.Insert(0, "--Select--");
}