У меня очень динамичное веб-приложение, которое динамически создает элементы управления во время выполнения.
Вот первая необходимая часть моего кода для решения моей проблемы.
Это цикл for, по сути он создает несколько флажков с идентификаторами и обработчиками событий.
// All I am doing here is incrementing our session counter so we can increment our ID
int id = Convert.ToInt32(Session["id"]);
id++;
Session["id"] = id;
// Now I create my checkbox
chkDynamic = new CheckBox();
chkDynamic.Text = "hey";
string chk = "chk" + id.ToString();
chkDynamic.ID = chk;
chkDynamic.CheckedChanged += new EventHandler(chkDynamic_CheckedChanged);
Panel1.Controls.Add(chkDynamic);
Этот следующий раздел - наш пользовательский обработчик четности
protected void chkDynamic_CheckedChanged(object sender, EventArgs e)
{
if (((CheckBox)sender).Checked)
Response.Write("you checked the checkbox :" + this.chkDynamic.ID);
else
Response.Write("checkbox is not checked");
}
То, что кажется мне странным. Разве это будет прекрасно работать, если я поменяю:
string chk = "chk" + id.ToString();
Кому:
string chk = "chk";
Но тогда, конечно, мы сталкиваемся с «несколькими элементами управления с одинаковым идентификатором»
Моя проблема заключается в том, чтобы заставить это работать с уникальными идентификаторами! Еще немного информации о ODD, которая может помочь. Если я вычеркну его из цикла и вручную добавлю флажок с другим идентификатором, он также будет работать. Это ошеломляет: (
chkDynamic = new CheckBox();
chkDynamic.Text = "hey";
// string chk = "chk" + id.ToString();
chkDynamic.ID = "hey1";
chkDynamic.CheckedChanged += new EventHandler(chkDynamic_CheckedChanged);
Panel1.Controls.Add(chkDynamic);
chkDynamic = new CheckBox();
chkDynamic.Text = "hey";
// string chk = "chk" + id.ToString();
chkDynamic.ID = "hey2";
chkDynamic.CheckedChanged += new EventHandler(chkDynamic_CheckedChanged);
Panel1.Controls.Add(chkDynamic);
Я также отладил свою программу, и значения, сохраненные в Session ["id"], не являются ни нулевыми, ни поврежденными. Всегда держать значение 0 и выше!
Спасибо за внимание, ребята / девочки. Я действительно застрял на этом!
PS - Извините. Там нет ошибок. События просто не запускаются, если я не кодирую идентификаторы.