2013-09-18 3 views
0

У меня возникла проблема с Response.ContentType Conflicts with Progress Bar. В основном, я пытаюсь отобразить индикатор выполнения, сохраняя набор записей в CSV-файле.Класс ASP - Response.ContentType Conflicts with Progress Bar

Я использую эти две строки ниже, чтобы вызвать индикатор выполнения и закрыть его в нижней части страницы, поэтому он работает с обычной страницей без (Response.AddHeader «Content-Disposition», «attachment; filename = export. CSV ")

response.write("<script language=""javascript"">ProgressStart();</script>") 
Response.Write("<script>ProgressDestroy()</script>") 

Я получаю эту ошибку ниже, и я знаю, что конфликтует с Response.ContactType„текст/CSV“.

Response object error 'ASP 0156 : 80004005' 

Header Error 

/Apps/ERP/Company/ExportCompanyView.asp, line 253 

The HTTP headers are already written to the client browser. Any HTTP header modifications must be made before writing page content. 

Есть ли способ байпас или обмануть его, поэтому я не буду вступать в конфликт с «Response.ContentType =„текст/CSV“»?

Спасибо заранее,

Этот код, где весь процесс происходит:

If SOViewSQL <> "" Then 
    set rs1 = conn.execute(SOViewSQL) 

    response.write("<script language=""javascript"">ProgressStart();</script>") 
    response.flush()  

    Write_CSV_From_Recordset RS1 
    Response.ContentType = "text/csv" 
    Response.AddHeader "Content-Disposition", "attachment;filename=export.csv" 

    Response.Write("<script>ProgressDestroy()</script>") 
    'response.flush() 


    set rs1 = nothing 
    conn.close 
    set conn = nothing 

End If 
+1

Ответ может быть ** либо CSV-файлом, либо HTML, но не тем и другим. –

ответ

0

Вам придется переписать страницу сценарий так вся обработка выполняется перед чем (заголовками или содержания страницы) отправляется клиенту, а затем убедитесь, что вы отправляете все заголовки, прежде чем звонить Response.Write или использовать %>.

Как так:

Dim showProgressScripts 
showProgressScripts = False 

If SOViewSQL <> "" Then 

    Set rs1 = conn.Execute(SOViewSQL) 

    Write_CSV_From_Recordset RS1 
    Response.ContentType = "text/csv" 
    Response.AddHeader "Content-Disposition", "attachment;filename=export.csv" 


    Set rs1 = Nothing 
    conn.close 
    Set conn = Nothing 

    showProgressScripts = True 

End If %> 

<p>my page content here</p> 

<% If showProgressScripts %> 
<script>ProgressStart();</script> 
<script>ProgressDestroy();</script> 
<% End If %> 

Конечно, ваш сценарий выглядит следующим образом вы обслуживаете HTML в виде файла CSV - Я думаю, что нужно пересмотреть то, что вы делаете.

+0

Спасибо за предложение. Я пробовал, как ваш код, предложенный выше, он запрашивает загрузку CSV, но индикатор прогресса никогда не появляется. – milacay

+0

любые другие предложения для выполнения () до (Response.ContentType = "text/csv") без конфликтов? – milacay