【发布时间】:2017-05-17 02:53:37
【问题描述】:
我有一个带有 pdf 文件列表的 gridview。当用户单击 pdf 时,它会在页面上显示内联文件。我想在加载 pdf 后执行一些 javascript,但我无法让它工作。问题是 pdf 在其他所有内容之后加载,因此 load 事件在 pdf 开始加载之前触发。
我的第一个方法是使用 iframe。内页将检索文件并将数据写入响应。如前所述,加载事件发生在加载 pdf 之前,我需要它在之后触发。当前代码使用通用处理程序 ashx 来加载 pdf 内联。 pdf 数据从 ashx 通用处理程序加载到服务器端后,如何触发事件来执行 javascript?
aspx 页面:
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "View")
{
int index = Convert.ToInt32(e.CommandArgument.ToString());
string Id = GridView1.DataKeys[index].Value.ToString();
HtmlGenericControl myObject = new HtmlGenericControl();
myObject.TagName = "object";
Panel1.Controls.Add(myObject);
myObject.Attributes.Add("data", "GetPdf.ashx?Id=" + Id);
}
}
通用处理程序 ashx:
public void ProcessRequest(HttpContext context)
{
System.Diagnostics.Debug.WriteLine("GetPdf.ashx started");
string Id = context.Request.QueryString["Id"];
byte[] data = GetPdf(Id);
context.Response.ClearContent();
context.Response.ContentType = "application/pdf";
context.Response.AppendHeader("Content-disposition", "inline");
context.Response.AddHeader("Content-Length", data.Length.ToString());
context.Response.BinaryWrite(data);
System.Diagnostics.Debug.WriteLine("GetPdf.ashx is done");
context.Response.End();
}
【问题讨论】:
标签: javascript c# asp.net pdf ashx