Обработка событий для динамически генерируемых элементов управления - PullRequest
1 голос
/ 14 ноября 2011

Я работаю над модулем, в котором я в основном генерирую все элементы управления на странице динамически, используя XSLT.Они визуализируются и добавляются к разметке справа.Проблема в том, что я хочу написать обработку событий для этого динамически сгенерированного элемента управления, и я не уверен, как этого добиться, потому что в идеальной среде разработки мы обычно дважды щелкаем по нашему элементу управления на странице aspx, и .NET создает для вас связанное событиев конце страницы aspx.cs.

Есть идеи?

Ответы [ 3 ]

1 голос
/ 14 ноября 2011

Динамически добавленные элементы управления обычно не сохраняются после обратной передачи.

Никакое двойное нажатие или даже ввод ожидаемых имен элементов управления с _selectedIndexChanged не даст вам того, что вы хотите.

Это предполагает (пожалуйста, сообщите нам, если я прав или нет), что вы добавляете элементы управления HTML, а не элементы управления ASP.NET динамически.

0 голосов
/ 14 ноября 2011

Вам нужно будет создать метод с соответствующим обработчиком и подключить его к динамически создаваемым элементам управления при их создании.

т.е.

protected void MyHandler(object sender, EventArgs e)
{
    //Do some stuff
}

, когда вы создаете свои элементы управления

LinkButton lb = new LinkButton();
    lb.ID = "lbexample";
    lb.Click += MyHandler;
Page.Form.Controls.Add(lb);

Но очень важно, чтобы при обратной передаче вы перестраивали эти элементы управления, как они были, или событие выигралоне огоньСначала вам нужно будет воссоздать элементы управления, чтобы событие могло быть вызвано, поэтому любые данные, которые вам понадобятся для создания элементов управления, должны быть доступны на обратной стороне, используя любой механизм состояний, который вам удобен.

0 голосов
/ 14 ноября 2011

Если вы хотите выполнить клиентские события, вы можете указать имя метода для запуска (или сам код), добавив соответствующий атрибут.

Например, если вы хотите запустить myCheckBox_OnClick, когда пользователь нажимает ваш динамически генерируемый флажок, вы можете сделать следующее:

myDynamicallyGeneratedControl.Attributes.Add("onclick", "myCheckBox_OnClick");

Вы также можете сгенерировать код JavaScript, который должен быть выполнен, и добавить его на страницу с помощью метода ClientScript.RegisterStartupScript страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...