У меня неприятная проблема с регистрацией события javascript внутри пользовательского элемента управления в представлении формы на панели Async. Я перехожу в свой вид формы и нажимаю кнопку, чтобы переключиться в режим вставки. Это не делает обратную передачу полной страницы. В режиме вставки событие page_load моего пользовательского элемента управления должно затем зарегистрировать событие javascript с помощью ScriptManager.RegisterStartupScript:
ScriptManager.RegisterStartupScript(base.Page, this.GetType(), ("dialogJavascript" + this.ID), "alert(\"Registered\");", true);
Однако когда я смотрю на свой HTML-код, события там нет. Следовательно, окно предупреждения никогда не отображается. Это настройка моего фактического файла aspx:
<igmisc:WebAsyncRefreshPanel ID = "WebAsyncRefreshPanel1" runat = "server">
<asp:FormView ID = "FormView1" runat = "server" DataSourceID = "odsCurrentIncident">
<EditItemTemplate>
<uc1:SearchSEDUsers ID = "SearchSEDUsers1" runat = "server" />
</EditItemTemplate>
<ItemTemplate>
Hello
<asp:Button ID = "Button1" runat = "server" CommandName = "Edit" Text = "Button" />
</ItemTemplate>
</asp:FormView>
</igmisc:WebAsyncRefreshPanel>
Кто-нибудь знает, что мне здесь может не хватать?





Вы пробовали использовать RegisterClientSideScript? Вы всегда можете проверить ключ для сценария с помощью IsClientSideScriptRegistered, чтобы не регистрировать его несколько раз.
Я предполагаю, что асинхронная панель выполняет частичную обратную страницу, которая не запускает механизм для регенерации сценариев запуска. Возможно, кто-то, кто лучше понимает жизненный цикл страницы ASP.Net и среду CLR, сможет заполнить эти пробелы.
Попробуйте это, у меня такая же проблема
ScriptManager.RegisterClientScriptBlock(MyBase.Page, Me.[GetType](),
("dialogJavascript" + this.ID), "alert(\"Registered\");", True)
Это сработало для меня!
Для меня это нормально работает. resizeChartMid() - это имя функции.
ScriptManager.RegisterStartupScript(this, typeof(string), "getchart48", "resizeChartMid();", true);
Я считаю, что использование Page.RegisterClientSideScript уже давно устарело, и когда дело доходит до обратных передач ajax, нам нужно использовать класс ScriptManager. Ближайшее совпадение, которое я могу найти, - это ScriptManager.RegisterClientScriptBlock, который, похоже, ничего не делает в formView.