使用JQuery将数千行动态加载到表

时间:2016-08-25 20:49:08

标签: javascript php jquery oracle datatables

我正在为面向CRM的前端GUI工作。我们有一个分层的客户结构。每个客户都有许多他们收费的地址,他们发送到的许多地址,以及与每个帐户相关联的许多联系人。我遇到的问题是,有些客户与该帐户关联的货物超过10,000。当一次呼叫所有这些时,这成为一个问题。我的后端很好,它可以在大约280毫秒(平均而言)获得所有的数据。我正在使用Javascript将所有信息加载到表中。这就是我目前正在做的事情:

    var r = new Array();
var j = -1, recordID;
r[++j] = '';

    //Loop through the data and build an array.
    for (i in data) {
        var d = data[i];
            recordID = d.id;
        r[++j] = '<tr>';
        r[++j] = '<td>'+ d['ADDRESS_LINE_1'] +'</td>';
        r[++j] = '</tr>';
    }
    //The line below joins the array and appends it to the table.
    $('#table').append(r.join(''));

我已经和那些为我建立规范的人交谈了,他们需要所有人立刻展示,没有过滤的可能性。现在,在加载所有数据并打开模态之前需要大约4秒。

有更快的方法吗?

1 个答案:

答案 0 :(得分:0)

Option Explicit

Private Sub cboTables_Change()
    Dim ws As Worksheet
    Dim tbl As ListObject
    Set ws = Worksheets(cboWorkSheets.Value)
    Set tbl = ws.ListObjects(cboTables.Value)
    ws.Activate
    tbl.DataBodyRange.Cells(1, 1).Select
End Sub

Private Sub cboWorkSheets_Change()
    Dim ws As Worksheet
    Dim tbl As ListObject

    Set ws = Worksheets(cboWorkSheets.Value)
    cboTables.Clear
    For Each tbl In ws.ListObjects
        cboTables.AddItem tbl.Name
    Next

End Sub

Private Sub UserForm_Initialize()
    cboWorkSheets.List = Array("Sheet1", "Sheet2", "Sheet3", "Sheet4", "Sheet5", "Sheet6", "Sheet7", "Sheet8", "Sheet9", "Sheet10", "Sheet11", "Sheet12")
End Sub

这可以帮助您获得比循环更好的性能。 在此处了解更多信息,http://api.jquery.com/jquery.map/