RegisterStartupScript가 ScriptManager의 Updatepanel에서 작동하지 않습니다.왜 그런 것일까요?
protected void timer1_Tick(object sender, EventArgs e)
{
foreach (RepeaterItem item in rpChat.Items)
{
TextBox txt = item.FindControl("txtChatMessage") as TextBox;
if (txt != null)
{
message[i] = txt.Text;
i--;
}
}
lblStatusChat.Text = "";
RepeaterBind();
string javaScript = "<script language=JavaScript>\n" + "alert('Button1_Click client-side');\n" + "</script>";
Page.ClientScript.RegisterStartupScript(this.GetType(), "myKey", javaScript);
}
timer_click
트리거 및 업데이트 패널.그리고 timer_tick 이벤트에 경고 메시지가 표시되지 않습니다.
UpdatePanel을 사용할 때 클라이언트스크립트를 사용하여 JavaScript를 호출할 수 없습니다.사용해야 합니다.ScriptManager.RegisterStartupScript
대신.
따라서 변경할 수 있습니다.
Page.ClientScript.RegisterStartupScript(this.GetType(), "myKey", javaScript);
로.
ScriptManager.RegisterStartupScript(updatePanelId,updatePanelId.GetType(), "alert", javaScript, true);
포스트백을 수행하고 업데이트 패널을 사용할 때 스크립트를 등록하므로 ScriptManager 클래스를 사용해야 합니다.
MSDN: ScriptManager.RegisterStartupScript
스크립트 관리자.컨트롤이 UpdatePanel 내부에 있을 때 페이지에 클라이언트 스크립트를 추가하는 데 사용되는 시작스크립트 메서드를 등록합니다.
ASPX 페이지
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Label ID="lblDisplayDate" runat="server" Text="Label"></asp:Label>
<asp:Button ID="btnPostback" runat="server" onclick="btnPostback_Click"
Text="ClickMe" />
</ContentTemplate>
</asp:UpdatePanel>
</div>
레지스터 시작 스크립트 뒤에 있는 코드
protected void btnPostback_Click(object sender, EventArgs e)
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append(@"<script language='javascript'>");
sb.Append(@"var lbl = document.getElementById('lblDisplayDate');");
sb.Append(@"lbl.style.color='red';");
sb.Append(@"</script>");
ScriptManager.RegisterStartupScript(btnPostback,this.GetType(), "JSCR", sb.ToString(),false);
}
Detail : 비동기식 포스트백 중 RegisterStartupScript를 사용하여 JavaScript를 프로그래밍 방식으로 추가합니다.
ScriptManager의 경우.RegisterStartupScript도 작동하지 않았습니다.
작업 안 함:
ScriptManager.RegisterStartupScript(Me,
Me.GetType(),
String.Format("Data{0}", Me.ID),
"<script>alert(111);</script>",
False)
작업:
ScriptManager.RegisterStartupScript(Me.Page,
Me.GetType(),
String.Format("Data{0}", Me.ID),
"<script>alert(111);</script>",
False)
Me
이 예에서는 다음에서 상속된 사용자 지정 컨트롤입니다.System.Web.UI.WebControls.WebParts.WebPart
조금 늦었을 텐데 여기서 해결책을 찾았어요. http://forums.asp.net/p/1117430/5483679.aspx/1
시스템을 사용해야 합니다.웹.UI.스크립트 관리자.페이지 대신 클라이언트스크립트 블록을 등록합니다.클라이언트 스크립트.시작 스크립트 등록
자신이 속한 클래스에서 페이지에 접근할 수 없는 경우.
Page page = HttpContext.Current.CurrentHandler as Page;
ScriptManager.RegisterStartupScript(page,page.GetType(), Guid.NewGuid().ToString(), yourScriptVariable, true);
위의 어떤 것도 저에게 효과가 없었습니다.됐어요.
ScriptManager.RegisterClientScriptBlock(TryCast(sender, Control), Me.[GetType](), "alert", message, True)
에서 찾았습니다.
언급URL : https://stackoverflow.com/questions/11643578/registerstartupscript-doesnt-work-with-scriptmanager-updatepanel-why-is-that
'programing' 카테고리의 다른 글
MySQL에서 문자열을 숫자로 자동 캐스트/변환하시겠습니까? (0) | 2023.08.12 |
---|---|
MS Excel에서 공통 집합 연산(결합, 교차, 마이너스)을 수행하려면 어떻게 해야 합니까? (0) | 2023.08.12 |
NVM에서 지정한 노드 버전을 사용하기 위한 Visual Studio 코드 (0) | 2023.08.07 |
랜드() %7이 항상 0을 반환하는 이유는 무엇입니까? (0) | 2023.08.07 |
jQuery를 사용하여 포인터에서 손가락으로 커서를 변경하는 방법은 무엇입니까? (0) | 2023.08.07 |