我有一个带有pdf文件列表的gridview。当用户单击pdf时,它会在页面上显示内联文件。我想在加载pdf后执行一些javascript,但我无法让它工作。问题是pdf会在其他所有内容之后加载,因此load事件会在pdf开始加载之前触发。
我的第一种方法是使用iframe。内部页面将检索文件并将数据写入响应。如前所述,load事件在加载pdf之前发生,我需要它在之后触发。当前代码使用通用处理程序ashx来加载pdf内联。在从ashx泛型处理程序加载服务器端的pdf数据后,如何触发事件来执行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();
}
答案 0 :(得分:0)
您是否尝试为object
代码onload
事件设置事件处理程序?我不确定这是否适用于所有浏览器,但我也不知道您需要使用哪些浏览器。
最坏情况您可以使用setTimeout
快速查询PDF的存在。
Here's a previous answer可以帮助您解决这两个问题。