В моем коде у меня есть CheckboxList, и я добавляю его элементы динамически! Я хочу сохранить текст, но только с проверил CheckBoxes в сеансе, потому что он понадобится мне в следующей форме!Exception 'Index out the range'
Так что я хотел сделать какой-нибудь текст и, как вы видите, я сохранить текст из проверяемых флажков в списке с именем myche
, но при нажатии на кнопку, чтобы увидеть первый элемент этого списка - это код lblProba.Text = myche[0];
дает мне исключение «Индекс вне диапазона». Кажется, мой список пуст.
public partial class FormEGN : System.Web.UI.Page
{
string mynewstring;
//List<List<string>> mycheckedList = new List<List<string>>();
List<string> myche = new List<string>();
CheckBoxList mycheckbox = new CheckBoxList();
protected void Page_Load(object sender, EventArgs e)
{
mynewstring = (string)Session["id2"];
if(!IsPostBack)
{
ddlNumberTourists.Items.Add("1");
ddlNumberTourists.Items.Add("2");
ddlNumberTourists.Items.Add("3");
}
}
protected void btnProba_Click(object sender, EventArgs e)
{
lblProba.Text = myche[0];
}
protected void btnReserve_Click(object sender, EventArgs e)
{
string num =Request.QueryString["ExcursionID"];
Response.Redirect(String.Format("ClintsInformation.aspx?Excursiondate_ID={0}",num));
}
protected void ddlNumberTourists_SelectedIndexChanged(object sender, EventArgs e)
{
int numTourists = Convert.ToInt32(ddlNumberTourists.SelectedItem.Text);
for (int i = 0; i < numTourists; i++)
{
Label myLabel = new Label();
myLabel.ID = "lblAccomodation" + (i + 1).ToString();
myLabel.Text = "Настаняване Турист" + (i + 1).ToString();
Page.FindControl("form1").Controls.Add(myLabel);
DropDownList myDropDownList = new DropDownList();
myDropDownList.ID = "ddlTourist" + i.ToString();
Page.FindControl("form1").Controls.Add(myDropDownList);
Page.FindControl("form1").Controls.Add(new LiteralControl("<br />"));
string connectionString = "Server=localhost\\SQLEXPRESS;Database=EXCURSIONSDATABASE;Trusted_Connection=true";
string query =
"SELECT Extra_Charge_ID, Excursion_ID, Amout, Extra_Charge_Description FROM EXTRA_CHARGES WHERE Excursion_ID=" + mynewstring;
SqlConnection conn = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand(query, conn);
try
{
conn.Open();
SqlDataReader rd = cmd.ExecuteReader();
int s = 0;
while (rd.Read())
{
mycheckbox.ID = "chkblextracharge" + i.ToString() + s.ToString();
mycheckbox.Items.Add(rd["Extra_Charge_Description"].ToString());
Page.FindControl("form1").Controls.Add(mycheckbox);
if (mycheckbox.Items[s].Selected == true)
{
myche.Add(mycheckbox.Items[s].Text);
}
s++;
}
}//End of try
catch (Exception ex)
{ }
Session["chk"] = myche;
}//end of for
}
}
Правильно отформатируйте свой код, удалив бессмысленные пустые строки. – Lion
@ Lion - У вас достаточно репутации, чтобы сделать изменения и показать OP правильный способ сделать это. – Oded
Пожалуйста, публикуйте только код _relevant_ - публикация всего этого кода просто затрудняет определение проблемы - такие вещи, как _line_, которые вызвали ошибку и связанный с ней код. Я предлагаю следовать рекомендациям [sscce] (http://sscce.org) – Oded