1

我正在维护一个经典的 ASP 应用程序。它有一些报告,其中很少有大约 25 列和大约 600 行的报告。我通过 AJAX 调用将数据从服务器返回到客户端并显示结果。

我所做的是在服务器端(使用字符串连接)为带有标题和行的表创建 HTML 字符串,并response.write在最后执行 a 。

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)

随着行数的增加,性能不是很好。

有什么更好的方法来做到这一点?

4

3 回答 3

2

VBScript 中的字符串连接性能确实很差,您可以尝试使用那些 文章中描述的方法来改进您的脚本。

最简单的情况是创建一个包含所有字符串的数组,然后调用Join将它们全部连接起来。

希望能帮助到你

于 2013-04-02T12:02:12.367 回答
1

不需要建立一个字符串,只需写出这些行。

例如

<% if not rsStatus.eof then %>
        <table>
            <tr>
                <td>S.N.</td>
            </tr>
        </table>
<% end if %>
于 2013-04-02T09:41:39.803 回答
0

只是想在这里为我自己的问题添加一个答案,因为这给了我很好的性能提升。

我将我的 SQL 查询转换为for xml每列都为“td”的查询,如下所示:

Select col1 as [td], col2 as [td], col3 as [td] from table for xmpl path('tr'), root('table')

并将结果返回给浏览器,几乎没有对 ASP 服务器端代码进行处理。

于 2014-09-09T07:46:33.773 回答