日期:2014-05-18  浏览次数:20466 次

########关于document对像未指明的错误##########
主页面是用IFRAME的,有top,left,main三个框架
功能页在main中,问题是:在功能页中有一个导出excel功能,方法是
response.AppendHeader....
response.Write(.....
response.End();

这样,会弹出一个保存的窗口

当保存完后,在main中的js脚本,所有使用到document对像的都会出现“未指明的错误”,
包括验证控件的js也会报错
如果不使用框架,直接访问功能页,则不会出现这种情况
潘立   17:11:32
主页面是用IFRAME的,有top,left,main三个框架
功能页在main中,问题是:在功能页中有一个导出excel功能,方法是
response.AppendHeader....
response.Write(.....
response.End();

这样,会弹出一个保存的窗口

当保存完后正常,在后来操作界面时,main中的js脚本,所有使用到document对像的都会出现“未指明的错误”,
包括验证控件的js也会报错
如果不使用框架,直接访问功能页,则不会出现这种情况  
导出代码如下
///   <summary>
///   导出文件
///   </summary>
///   <param   name= "ds "> 数据集 </param>
///   <param   name= "FileName "> 文件名 </param>
///   <param   name= "fileType "> 导出类型(文件反缀,如 "xls ", "txt ") </param>
///   <param   name= "ControlPage "> 调用页Page对象 </param>
///   调用:PubFunction.exportFile(dsUsers, "UserInfo ", "xls ",this.Page);
public   static   void   exportFile(DataSet   ds,string   FileName,string   fileType,System.Web.UI.Page   ControlPage)    
{  
string   s=System.Text.Encoding.Default.BodyName.ToString();//   .Defalut();
HttpResponse   resp;  
resp   =   ControlPage.Response;  

//设置类型为中文防止乱码的出现    
resp.Charset= "gb2312 ";    
//设置输出流为简体中文
resp.ContentEncoding   =   System.Text.Encoding.GetEncoding( "GB2312 ");
//由于网页编码格式为UTF-8,输出的文件名应对应该格式
resp.AppendHeader( "Content-Disposition ",   "attachment;filename= "   +HttpUtility.UrlEncode(FileName,   System.Text.Encoding.UTF8)+ ". "+fileType);    

string   colHeaders=   " ",   ls_item= " ";  
int   i=0;  

//定义表对象与行对像,同时用DataSet对其值进行初始化  
DataTable   dt=ds.Tables[0];  
DataRow[]   myRow=dt.Select( " ");    
//   typeid== "1 "时导出为EXCEL格式文件;typeid== "2 "时导出为XML格式文件  

//取得数据表各列标题,各标题之间以\t分割,最后一个列标题后加回车符  
for(i=0;i <dt.Columns.Count-1;i++)
colHeaders+=dt.Columns[i].Caption.ToString()+ "\t ";  
colHeaders   +=dt.Columns[i].Caption.ToString()   + "\r\n ";        
//向HTTP输出流中写入取得的数据信息  
resp.Write(colHeaders);    
//逐行处理数据      
foreach(DataRow   row   in   myRow)  
{  
//在当前行中,逐列获得数据,数据之间以\t分割,结束时加回车符\n  
for(i=0;i <dt.Columns.Count-1;i++)
ls_item   +=row[i].ToString()   +   "\t ";            
ls_item   +=   row[i].ToString()   + "\r\n ";  
//当前行数据写入HTTP输出流,并且置空ls_item以便下行数据          
resp.Write(ls_item);  
ls_item= " ";  
}  
 
//写缓冲区中的数据到HTTP头文件中  
resp.End();  
}

------解决方案--------------------
resp.AppendHeader( "Content-Disposition ", "attachment;filename= " +HttpUtility.UrlEncode(FileName, Syste