Динамическое создание нескольких элементов управления, которые используют общий обработчик - PullRequest
1 голос
/ 05 ноября 2011

Этот первый раздел находится в цикле. Создает динамические флажки без проблем.

// All I am doing here is incrementing our session counter
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(this.chkDynamic_CheckedChanged);
Panel1.Controls.Add(chkDynamic);

Мой обработчик событий не подключен для этого. Странно, если я жестко закодирую идентификатор, который он работает, но только для одной итерации цикла, потому что если мы жестко закодируем идентификаторы, то мы столкнемся с «множественными ошибками идентификаторов»

protected void chkDynamic_CheckedChanged(object sender, EventArgs e)
{
    if (chkDynamic.Checked)
        Response.Write( "you checked the checkbox");
    else if (!chkDynamic.Checked)
        Response.Write("checkbox is not checked");
}

1 Ответ

3 голосов
/ 05 ноября 2011

Вам необходимо проверить отправителя в вашем обработчике событий, чтобы узнать, какой флажок отправил событие:

protected void chkDynamic_CheckedChanged(object sender, EventArgs e)
{
    if (((CheckBox)sender).Checked)
        Response.Write( "you checked the checkbox");
    else 
        Response.Write("checkbox is not checked");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...