колодца. Проблема, с которой я столкнулся, заключается в том, что у меня есть собственный настраиваемый элемент управления, и я делаю запрос, получаю записи и динамически добавляю элементы управления html на страницу на основе данных.
Теперь возникла проблема с добавлением динамического JavaScript.
Я делаю это с помощью буквальных элементов управления.
<asp:Literal runat="server" ID="latEventToolTipJqueryScripts"></asp:Literal>
Это работает как шарм.
<script language="javascript" type="text/javascript">
// <![CDATA[
Sys.Application.add_load(WireEvents_<%=this.ID%>); // fix wiring for .NET ajax updatepanel
$(WireEvents_<%=this.ID%>); // handle page load wiring
function WireEvents_<%=this.ID%>() {
<asp:Literal runat="server" ID="latEventToolTipJqueryScripts"></asp:Literal>
}
// ]]>
</script>
Я добавляю буквальный текст динамически из исходного кода.
Однако при размещении элемента управления на панели обновления обратная передача не обновляет скрипт.
РЕДАКТИРОВАТЬ: Sys.Application.add_load
просто перепрограммирует необходимые функции с помощью панели обновления. Проблема в том, что сценарий, который должен быть вместо литерала, не обновляется в панели обновления.
Я пробовал ClientScript.RegisterStartupScript, но он имеет тот же эффект, что и уловка с буквальным управлением. Любая помощь?
--------------------------- РЕШЕНО (спасибо Праная Рана) ---------- ------------------------
Избавлен от литерала в ascx-стороне. а также Sys.Application.add_load
теперь только в коде. Меня сбивал с толку JQuery.
this.strBuilderJS.Append( "<script language='javascript' type='text/javascript'>" +
"$(WireEvents_" + this.ID + ");" +
"function WireEvents_" + this.ID + "(){"+
" alert('stuff');");
this.strBuilderJS.Append( "}</script>");
, а затем
ScriptManager.RegisterStartupScript(this, this.GetType(), "strBuilderJS", strBuilderJS.ToString(), false);