Sys.WebForms.페이지 요청 관리자 파서 오류 예외:서버에서 받은 메시지를 구문 분석할 수 없습니다.
제 페이지에 그리드 보기가 있는데 엑셀 시트로 내보내려고 합니다. 아래는 제가 이 작업을 수행하기 위해 작성한 코드입니다. 여기서 저는 이미 그리드를 바인딩하는 방법에 데이터 세트를 전달하고 있습니다.btnExcelExport
그리드 내용을 Excel 시트로 내보내는 버튼입니다.
private void BindGridView(DataSet ds)
{
if (ds.Tables.Count > 0)
{
if (ds.Tables[0].Rows.Count > 0)
{
GVUserReport.DataSource = ds;
GVUserReport.DataBind();
btnExcelExport.Visible = true;
}
}
}
protected void btnExcelExport_Click(object sender, EventArgs e)
{
Response.Clear();
Response.AddHeader("content-disposition","attachment;filename=FileName.xls");
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ContentType = "application/vnd.xls";
System.IO.StringWriter stringWrite = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
GVUserReport.RenderControl(htmlWrite);
Response.Write(stringWrite.ToString());
Response.End();
}
public override void VerifyRenderingInServerForm(Control control)
{
return;
}
디버깅할 때 그리드가 성공적으로 바인딩되었지만 Excel로 내보내려고 하면 다음 오류가 발생합니다.
"Microsoft JScript 런타임 오류: Sys.웹 양식.페이지 요청 관리자 파서 오류 예외:서버에서 받은 메시지를 구문 분석할 수 없습니다."
저는 이 문제를 해결했습니다.내가 사용하는 것처럼UpdatePanel
아래 코드를 추가했습니다.Page_Load
그 페이지의 이벤트와 그것은 나에게 효과가 있었습니다.
protected void Page_Load(object sender, EventArgs e) {
ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page);
scriptManager.RegisterPostBackControl(this.btnExcelExport);
//Further code goes here....
}
저의 경우 일부 응답으로 인해 문제가 발생했습니다.웹 사이트의 마스터 페이지에 명령을 작성합니다(코드 뒤에 있음)디버깅 목적으로만 사용되었습니다(그게 최선의 방법은 아닙니다).
컨트롤을 에 추가했습니다.Triggers
업데이트 패널의 태그:
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="exportLinkButton" />
</Triggers>
</asp:UpdatePanel>
이렇게 하면 exportLinkButton이 UpdatePanel을 업데이트하도록 트리거합니다.
자세한 내용은 여기.
저도 같은 오류가 있었는데, AsyncPostBackTrigger 대신 시도했습니다.이것은 저에게 효과가 있었습니다.왜냐하면 우리는 부분적인 포스트백을 원하지 않기 때문입니다.
1- 응답을 사용하지 않습니다.글을 씁니다.
2- 아래 코드를 Page_Load가 아닌 LinkButton(동적으로)을 생성하여 문제를 해결했습니다.
ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page);
scriptManager.RegisterPostBackControl(lblbtndoc1);
VB를 위해서.넷 프렌즈 -
Dim scriptManager As ScriptManager = scriptManager.GetCurrent(Me.Page)
scriptManager.RegisterPostBackControl(Me.YourButtonNameHere)
이것을 PageLoad에 추가하면 문제가 해결됩니다.
ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page);
scriptManager.RegisterPostBackControl(this.lblbtndoc1);
이것은 저에게도 효과가 있었지만, 추가로 (아래)가 있습니다.
protected void Page_Load(object sender, EventArgs e) {
ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page);
scriptManager.RegisterPostBackControl(this.btnExcelExport);
//Further code goes here....
}
이벤트 처리가 완료된 후 다른 버튼을 클릭하기 위해 버튼에 스크립트를 등록하고 있었습니다.작동하려면 업데이트 패널에서 다른 단추를 제거해야 했습니다(누군가가 동일한 문제에 직면할 경우).
저에게 효과가 있었던 것은 그물을 치는 것이었습니다.MaxHttpCollectionInetpub VirtualDirectories\443\web.config 파일의 appSettings 태그에서 높은 값으로 키:
<configuration>
<appSettings>
<add key="aspnet:MaxHttpCollectionKeys" value="100000" />
</appSettings>
</configuration>
이 모든 작업을 수행하기 전에 제공했는지 확인하십시오.asp:LinkButton ID
와 같습니다.asp:PostBackTrigger ControlID
그렇지 않으면 페이지가 동일한 오류를 겪게 됩니다.
언급URL : https://stackoverflow.com/questions/11221033/sys-webforms-pagerequestmanagerparsererrorexception-the-message-received-from-t
'source' 카테고리의 다른 글
부탁한다.RawUr.부탁한다.URL (0) | 2023.06.18 |
---|---|
스케줄링된 작업으로 실행할 때 PowerShell 스크립트가 파일에 액세스할 수 없음 (0) | 2023.06.18 |
판다 데이터 프레임에서 str.contains 사용 (0) | 2023.06.18 |
엑셀 스크롤을 중간 클릭 없이 원활하게 할 수 있나요? (0) | 2023.06.18 |
Oracle 매개 변수 및 IN 절 (0) | 2023.06.18 |