У меня есть пользовательский элемент управления пользовательского интерфейса, который имеет класс JavaScript, написанный вокруг рамки AJAX.NET. Он наследуется от Sys.UI.Control. Сам элемент управления - UserControl. В методе рендеринга я обертываю элемент управления в промежутке и выдаю идентификатор span идентификатора ClientID пользовательского элемента управления. Таким образом, я могу это сделать позже:Sys.Application.add_init Не вызывается при обновлении UpdatePanel
var control = $find('<%= ServerControlID.ClientID %>');
Это позволяет мне получить объект-клиент, представляющий элемент управления пользовательского интерфейса.
создать элемент управления в JavaScript, делая это (также в методе визуализации)
writer.Write(@"<script type='text/javascript'>
Sys.Application.add_init(function() {
debugger;
$create(General.Filters.AccountGroupFilter,
" + GetProperties() + @",
null,
null,
$get('" + this.ClientID + @"'));
});
</script>");
Это создает объект. Это делается внутри события init жизненного цикла.
Проблема заключается в том, что этот элемент управления обернут внутри UpdatePanel потребляющей страницей/элементом управления. Когда другое управление инициирует обновление, все пользовательские интерфейсы элементов управления перерисовываются, НО событие инициализации NEVER FIRES снова.
Что происходит тогда, когда я делаю это:
var control = $find('<%= ServerControlID.ClientID %>');
if(control != null)
control.doSomething();
Ничего не происходит, потому что $ находка не находит контроля после вызова AJAX. Я знаю, что НЕ делаю это правильно. Где я иду не так. Статья MSDN для этого материала указывает мне круги!
EDIT: Понял я включать метод, который я делаю в части UserControl.cs Рендер
protected override void Render(HtmlTextWriter writer)
{
writer.Write("<span id=\"" + this.ClientID + "\" >");
writer.Write(@"<script type='text/javascript'>
Sys.Application.add_init(function() {
$create(TradePMR.OMS.Resources.UserControls.General.Filters.AccountGroupFilter,
" + GetProperties() + @",
null,
null,
$get('" + this.ClientID + @"'));
});
</script>");
base.Render(writer);
writer.WriteEndTag("span");
}