我正在维护一个经典的ASP应用程序。它有一些报告,其中很少有大约25列和大约600行。我通过AJAX调用将数据从服务器返回给客户端并显示结果。
我所做的是为表格创建一个HTML字符串,其中包含服务器端的标题和行(使用字符串连接),并在最后执行response.write
。
if not rsStatus.eof then
strresult=strresult & "<table class='sort-table' id='table-1'><thead><tr class='gridHeader' style='height:15px;'>"
strresult=strresult & "<td>S.N.</td>"
strresult=strresult & "<td>TSPL Job No.</td>"
strresult=strresult & "<td>Client Name</td>"
strresult=strresult & "<td>Job Type</td>"
strresult=strresult & "<td>Govt Office</td>"
strresult=strresult & "<td>Ref Value</td>"
strresult=strresult & "<td>Govt File No.</td>"
strresult=strresult & "<td>Submission Date</td>"
strresult=strresult & "<td>Days Elasped Since Filing Date</td>"
strresult=strresult & "<td>Process-Cycle/Status stage</td>"
strresult=strresult & "<td>Status/ Remarks</td>"
strresult=strresult & "<td>Status Last Updated on</td>"
strresult=strresult & "<td>Trigon Bill No</td>"
strresult=strresult & "<td>Trigon Bill Date</td>"
strresult=strresult & "<td>Payment Received / Pending</td>"
strresult=strresult & "</thead></tr><tbody>"
dim rownum
rownum = 1
while not rsStatus.eof
strresult=strresult & "<tr class='gridrow " & IIf(rownum Mod 2=1,"bgodd","bgeven") &"'>"
strresult=strresult & "<td>" & rownum & "</td>"
strresult=strresult & "<td><a href='http://localhost/app/global/weblets/Jobdetails.asp?JobId=" & rsStatus("iJobId") & "' target='new'>" & rsStatus("vJobNo") & "</a></td>"
strresult=strresult & "<td>" & rsStatus("Client") & "</td>"
strresult=strresult & "<td>" & rsStatus("vJobType") & "</td>"
strresult=strresult & "<td>" & rsStatus("GovtOffice") & "</td>"
strresult=strresult & "<td>" & rsStatus("RefVal") & "</td>"
strresult=strresult & "<td>" & rsStatus("FileNo") & "</td>"
strresult=strresult & "<td>" & rsStatus("SubmitedOn") & "</td>"
strresult=strresult & "<td>" & rsStatus("elapsed") & "</td>"
strresult=strresult & "<td>" & rsStatus("CurrentStatus") & "</td>"
strresult=strresult & "<td>" & rsStatus("comment") & "</td>"
strresult=strresult & "<td>" & rsStatus("dStatusDate") & "</td>"
strresult=strresult & "<td>" & rsStatus("BillNo") & "</td>"
strresult=strresult & "<td>" & rsStatus("BillDate") & "</td>"
strresult=strresult & "<td>" & rsStatus("PymtStatus") & "</td>"
strresult=strresult & "</tr>"
rownum = rownum+1
rsStatus.movenext
wend
strresult=strresult & "</tbody></table>"
else
strresult=strresult & "<tr class='gridrow'><td colspan=3>No Status Present for the Job</td></tr>"
end if
Response.Write(strresult)
由于行数没有增加,性能不是很好。
什么是更好的方法呢?
答案 0 :(得分:2)
VBScript中的字符串连接性能非常差,您可以尝试使用those articles中描述的方法来改进脚本。
最简单的情况是创建一个包含所有字符串的数组,然后调用Join
将它们连接起来。
希望有所帮助
答案 1 :(得分:1)
无需构建字符串,只需写出行。
e.g。
<% if not rsStatus.eof then %>
<table>
<tr>
<td>S.N.</td>
</tr>
</table>
<% end if %>
答案 2 :(得分:0)
我想在这里添加一个自己问题的答案,因为这给了我一个很好的性能提升。
我将我的SQL查询转换为每个列的for xml
个查询,因为&#39; td&#39;像这样:
Select col1 as [td], col2 as [td], col3 as [td] from table for xmpl path('tr'), root('table')
并将结果返回给浏览器,几乎没有处理ASP服务器端代码。