加速kendo ui数据源

时间:2017-12-18 14:29:04

标签: asp.net json sql-server kendo-ui kendo-grid

我有关于kendo ui网格及其数据源(从本地服务器上的其他页面加载的kendo ui数据源)的问题。

首先,我正在IIS服务器上使用经典ASP和SQL服务器(2008年至2016年版本)上的Intranet Web应用程序

这是我的代码:

     var grid = $("#grid").kendoGrid({
    toolbar: [
        {
            template: '<a class="k-button k-button-icontext k-grid-refresh" href="\\#" onclick="clearFilter()"><span class="k-icon k-i-refresh"></span></a>'
        }
    ],
    selectable: "row",
    groupable: true,
    sortable: true,
    scrollable: true,
    height: 740,
    reorderable: true,
    resizable: true,
    filterable: true,
    columnMenu: {
        columns: true,
        filterable: true
    },
    pageable: {
        refresh: true,
        pageSize: 15,
        buttonCount: 5
    },
    allowCopy: true,
    columns: [ 
        {
            field: "CRIT",
            title: "Criticità",
            // locked: true,
            lockable: false,
            groupable: false,
            width: 80,
            menu: true,
            filterable: {
                // ui: filtPerIdComb
            }
        }, 
        {
            field: "VIP",
            title: "Vip",
            lockable: true,
            width: 100,
            filterable: {
                // ui: filtPerRegion
            }
        }, 
        {
            field: "NOMETEC",
            title: "Tecnico/Ditta",
            lockable: true,
            width: 120,
            filterable:{
                // ui: filtPerProvince
            }
        },
        {
            field: "NOMEPC",
            title: "Nome Computer",
            // locked: true,
            lockable: false,
            groupable: false,
            filterable:{
                // ui: filtPerSiteName
            },
            width: 200
        },  
        {
            field: "COGNOME",
            title: "Cognome",
            lockable: true,
            groupable: false,
            width: 130,
            filterable:{
                // ui:filtPerCoordN
            }
        },  
        {
            field: "NOME",
            title: "Nome",
            lockable: true,
            groupable: false,
            width: 130,
            filterable:{
                // ui:filtPerCoordE
            }
        },  
        {
            field: "TEL",
            title: "Telefono",
            lockable: true,
            groupable: false,
            width: 80,
            filterable:{
                // ui:filtPerMasl
            }
        },  
        {
            field: "DIFETTO",
            title: "Difetto",
            lockable: true,
            width: 130,
            filterable:{
                // ui: filtPerCategory
            }
        },  
        {
            field: "DETTAGLI",
            title: "Dettagli",
            lockable:true,
            width: 130,
            filterable: {
                // ui: filtPerTipology
            }
        },  
        {
            field: "STATO",
            title: "Stato",
            lockable: true,
            width: 130,
            filterable:{
                // ui: filtPerContext
            }
        },  
        {
            field: "DATAAP",
            title: "Data Apertura",
            lockable: true,
            width: 150,
            filterable:{
                // ui: filtPerDescriptions
            }
        },  
        {
            field: "NPROG",
            title: "N° Progressivo",
            lockable: true,
            sortable: false,
            width: 150,
            filterable:{
                // ui: filtPerPlantRecords
            }
        }
    ],
    dataSource: {
            transport: {
                read: {
                    url: "servizivari.asp?funzione=provatabellakendo",
                    dataType: "json"
                }
            }
    }
}).data("kendoGrid");

我的目标是获取一个表,其中包含从“servizivari.asp”页面加载数据源的所有票证。

现在,页面“servizivari.asp”返回一个application / json页面,其中包含一个json“hand-writed”(我不使用任何库将记录集作为json字符串,我写了代码要做到这一点,它的工作正常。我知道在sql 2016上我可以使用“for json”,但不是我以前版本的地方......)

这是“Servizivari.asp”页面的代码:

    response.clear
    response.ContentType="application/json"
    response.charset = "utf-8"
    set rst = libdb_getrs(conntemp, "select top 1000 t.colore as COLORE, t.tipologia as CRIT, i.vip as VIP, n.nom as NOMETEC, i.matricola as NOMEPC, i.cognome as COGNOME, i.nome as NOME, i.telefono as TEL, replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(i.desprob, char(13), ' '), char(10), ' '), char(39), '-'), char(34), '-'), char(47), '-'), char(92), '-'), ' ',char(17)+char(18)), char(18)+char(17), ''), char(17)+char(18), ' '), char(9), ' ') as DIFETTO, replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(i.risprob, char(13), ' '), char(10), ' '), char(39), '-'), char(34), '-'), char(47), '-'), char(92), '-'), ' ',char(17)+char(18)), char(18)+char(17), ''), char(17)+char(18), ' '), char(9), ' ') as DETTAGLI, i.stato as STATO, convert(date,i.dataap) as DATAAP, i.nprog as NPROG from inter i left join tipologie t on i.CDNAME = t.id left join nom n on n.id = i.nominativo")
    if not rst.eof then
        jsonarr = "["
        flag = true
        while not rst.eof
            colore = normalizzaperkendo(rst("COLORE"))
            crit = normalizzaperkendo(rst("CRIT"))
            vip = normalizzaperkendo(rst("VIP"))
            nometec = normalizzaperkendo(rst("NOMETEC"))
            nomepc = normalizzaperkendo(rst("NOMEPC"))
            cognome = normalizzaperkendo(rst("COGNOME"))
            nome = normalizzaperkendo(rst("NOME"))
            tel = normalizzaperkendo(rst("TEL"))
            difetto = normalizzaperkendo(rst("DIFETTO"))
            dettagli = normalizzaperkendo(rst("DETTAGLI"))
            stato = normalizzaperkendo(rst("STATO"))
            dataap = normalizzaperkendo(rst("DATAAP"))
            nprog = normalizzaperkendo(rst("NPROG"))
            if not flag then
                jsonarr = jsonarr &","
            END IF
            flag = false
            jsonarr = jsonarr &"{""COLORE"":"""&colore&""",""CRIT"":"""&crit&""",""VIP"":"""&vip&""",""NOMETEC"":"""&nometec&""",""NOMEPC"":"""&nomepc&""",""COGNOME"":"""&cognome&""",""NOME"":"""&nome&""",""TEL"":"""&tel&""",""DIFETTO"":"""&difetto&""",""DETTAGLI"":"""&dettagli&""",""STATO"":"""&stato&""",""DATAAP"":"""&dataap&""",""NPROG"":"""&nprog&"""}"
            rst.movenext
        wend
        jsonarr = jsonarr & "]"
    else
        jsonarr= "select top 1000 t.colore as COLORE, t.tipologia as CRIT, i.vip as VIP, n.nom as NOMETEC, i.matricola as NOMEPC, i.cognome as COGNOME, i.nome as NOME, i.telefono as TEL, replace(replace(i.desprob, char(13), ''), char(10), '') as DIFETTO, replace(replace(i.risprob, char(13), ''), char(10), '') as DETTAGLI, i.stato as STATO, convert(date,i.dataap) as DATAAP, i.nprog as NPROG from inter i left join tipologie t on i.CDNAME = t.id left join nom n on n.id = i.nominativo"
    end if
    response.write jsonarr
    response.end

请注意,这个查询只是一个开发,它会有所不同,因为用户可以选择比我更多的列并设置语句来过滤数据

现在在这里,您可以看到脚本返回的json示例(20行):

    [{"COLORE":"Green","CRIT":"Verde Ordinario","VIP":"","NOMETEC":"xxx yyy","NOMEPC":"pcnamexxx","COGNOME":"Doe","NOME":"John","TEL":"1234567890","DIFETTO":"problem zzz","DETTAGLI":"solution xyz","STATO":"chiusa","DATAAP":"19/09/2016","NPROG":"2/2016"},{"COLORE":"Black","CRIT":"Bianco Ordinario","VIP":"","NOMETEC":"xxx yyy","NOMEPC":"pcnamexxx","COGNOME":"Doe","NOME":"John","TEL":"1234567890","DIFETTO":"problem zzz","DETTAGLI":"solution xyz","STATO":"chiusa","DATAAP":"19/09/2016","NPROG":"3/2016"},{"COLORE":"Black","CRIT":"Bianco Ordinario","VIP":"","NOMETEC":"xxx yyy","NOMEPC":"pcnamexxx","COGNOME":"Doe","NOME":"John","TEL":"1234567890","DIFETTO":"problem zzz","DETTAGLI":"solution xyz","STATO":"chiusa","DATAAP":"19/09/2016","NPROG":"4/2016"},{"COLORE":"Black","CRIT":"Bianco Ordinario","VIP":"","NOMETEC":"xxx yyy","NOMEPC":"pcnamexxx","COGNOME":"Doe","NOME":"John","TEL":"1234567890","DIFETTO":"problem zzz","DETTAGLI":"solution xyz","STATO":"chiusa","DATAAP":"19/09/2016","NPROG":"5/2016"},{"COLORE":"Green","CRIT":"Verde Critico","VIP":"","NOMETEC":"xxx yyy","NOMEPC":"pcnamexxx","COGNOME":"Doe","NOME":"John","TEL":"1234567890","DIFETTO":"problem zzz","DETTAGLI":"solution xyz","STATO":"chiusa","DATAAP":"19/09/2016","NPROG":"6/2016"},{"COLORE":"Black","CRIT":"Bianco Ordinario","VIP":"","NOMETEC":"xxx yyy","NOMEPC":"pcnamexxx","COGNOME":"Doe","NOME":"John","TEL":"1234567890","DIFETTO":"problem zzz","DETTAGLI":"solution xyz","STATO":"chiusa","DATAAP":"19/09/2016","NPROG":"7/2016"},{"COLORE":"Green","CRIT":"Verde Ordinario","VIP":"","NOMETEC":"xxx yyy","NOMEPC":"pcnamexxx","COGNOME":"Doe","NOME":"John","TEL":"1234567890","DIFETTO":"problem zzz","DETTAGLI":"solution xyz","STATO":"chiusa","DATAAP":"19/09/2016","NPROG":"8/2016"},{"COLORE":"Black","CRIT":"Bianco Ordinario","VIP":"","NOMETEC":"xxx yyy","NOMEPC":"pcnamexxx","COGNOME":"Doe","NOME":"John","TEL":"1234567890","DIFETTO":"problem zzz","DETTAGLI":"solution xyz","STATO":"chiusa","DATAAP":"19/09/2016","NPROG":"9/2016"},{"COLORE":"Black","CRIT":"Bianco Critico","VIP":"","NOMETEC":"xxx yyy","NOMEPC":"pcnamexxx","COGNOME":"Doe","NOME":"John","TEL":"1234567890","DIFETTO":"problem zzz","DETTAGLI":"solution xyz","STATO":"chiusa","DATAAP":"19/09/2016","NPROG":"10/2016"},{"COLORE":"Green","CRIT":"Verde Ordinario","VIP":"","NOMETEC":"xxx yyy","NOMEPC":"pcnamexxx","COGNOME":"Doe","NOME":"John","TEL":"1234567890","DIFETTO":"problem zzz","DETTAGLI":"solution xyz","STATO":"chiusa","DATAAP":"19/09/2016","NPROG":"11/2016"},{"COLORE":"Green","CRIT":"Verde Critico","VIP":"","NOMETEC":"xxx yyy","NOMEPC":"pcnamexxx","COGNOME":"Doe","NOME":"John","TEL":"1234567890","DIFETTO":"problem zzz","DETTAGLI":"solution xyz","STATO":"chiusa","DATAAP":"19/09/2016","NPROG":"12/2016"},{"COLORE":"Green","CRIT":"Verde Ordinario","VIP":"","NOMETEC":"xxx yyy","NOMEPC":"pcnamexxx","COGNOME":"Doe","NOME":"John","TEL":"1234567890","DIFETTO":"problem zzz","DETTAGLI":"solution xyz","STATO":"chiusa","DATAAP":"19/09/2016","NPROG":"13/2016"},{"COLORE":"Black","CRIT":"Bianco Ordinario","VIP":"","NOMETEC":"xxx yyy","NOMEPC":"pcnamexxx","COGNOME":"Doe","NOME":"John","TEL":"1234567890","DIFETTO":"problem zzz","DETTAGLI":"solution xyz","STATO":"chiusa","DATAAP":"19/09/2016","NPROG":"14/2016"},{"COLORE":"Yellow","CRIT":"Giallo Ordinario","VIP":"","NOMETEC":"xxx yyy","NOMEPC":"pcnamexxx","COGNOME":"Doe","NOME":"John","TEL":"1234567890","DIFETTO":"problem zzz","DETTAGLI":"solution xyz","STATO":"chiusa","DATAAP":"19/09/2016","NPROG":"15/2016"},{"COLORE":"Yellow","CRIT":"Giallo Ordinario","VIP":"","NOMETEC":"xxx yyy","NOMEPC":"pcnamexxx","COGNOME":"Doe","NOME":"John","TEL":"1234567890","DIFETTO":"problem zzz","DETTAGLI":"solution xyz","STATO":"chiusa","DATAAP":"19/09/2016","NPROG":"16/2016"},{"COLORE":"Green","CRIT":"Verde Ordinario","VIP":"","NOMETEC":"xxx yyy","NOMEPC":"pcnamexxx","COGNOME":"Doe","NOME":"John","TEL":"1234567890","DIFETTO":"problem zzz","DETTAGLI":"solution xyz","STATO":"chiusa","DATAAP":"19/09/2016","NPROG":"17/2016"},{"COLORE":"Black","CRIT":"Bianco Critico","VIP":"","NOMETEC":"xxx yyy","NOMEPC":"pcnamexxx","COGNOME":"Doe","NOME":"John","TEL":"1234567890","DIFETTO":"problem zzz","DETTAGLI":"solution xyz","STATO":"chiusa","DATAAP":"19/09/2016","NPROG":"18/2016"},{"COLORE":"Black","CRIT":"Bianco Ordinario","VIP":"","NOMETEC":"xxx yyy","NOMEPC":"pcnamexxx","COGNOME":"Doe","NOME":"John","TEL":"1234567890","DIFETTO":"problem zzz","DETTAGLI":"solution xyz","STATO":"chiusa","DATAAP":"19/09/2016","NPROG":"19/2016"},{"COLORE":"Black","CRIT":"Bianco Ordinario","VIP":"","NOMETEC":"xxx yyy","NOMEPC":"pcnamexxx","COGNOME":"Doe","NOME":"John","TEL":"1234567890","DIFETTO":"problem zzz","DETTAGLI":"solution xyz","STATO":"chiusa","DATAAP":"19/09/2016","NPROG":"20/2016"},{"COLORE":"Black","CRIT":"Bianco Ordinario","VIP":"","NOMETEC":"xxx yyy","NOMEPC":"pcnamexxx","COGNOME":"Doe","NOME":"John","TEL":"1234567890","DIFETTO":"problem zzz","DETTAGLI":"solution xyz","STATO":"chiusa","DATAAP":"19/09/2016","NPROG":"21/2016"}]

此处的所有内容都可以使用,但如果我想要db包含的所有数据(至少10.000行,最多100,000行),那么脚本会超时(我可以通过这种方式达到最多3000行)。

现在,我必须得到的步骤是每个人(从5-6个用户到30个用户)可以在此表上创建自己的视图(预先过滤他们从db中获取的数据,在查询中添加一些语句) ,但是如果他们需要得到Db包含的每一行(这对他们的工作很常见 - 他们也可以选择获得比我在查询上设置的更多的列)我想让它工作并做到这一点 尽可能快。

asp记录集有pagesize方法,如果可能的话,现在我想让服务器(以及比iis更多的数据库)详细说明所有内容,以便在客户端上运行得更快。

我知道我不是那么清楚,但提前感谢你的帮助!

0 个答案:

没有答案