Da die von der Abfrage zurückgegebene Datenmenge groß ist und mehr als 100.000 Daten beträgt, muss die Seitenabfragefunktion optimiert werden. Geben Sie die Verwendung von DataGrid im Originalprogramm auf und schreiben Sie das Paging-Anzeigemodul selbst.
Fügen Sie der Seite zunächst einige DIVs hinzu:
implementiert den Client Paging-Funktion:
var CurPage=0; //Aktuelle Seite
var TotalPage=0; //Gesamtzahl der Seiten
var PageTab=7; //Die Anzahl der in jeder Gruppe angezeigten Seiten
var CurTab=0; //Aktuelle Gruppierung
Mein Programm ist so eingestellt, dass es 50 Daten pro Seite und 7 Seiten pro Gruppe anzeigt. Diese können nach Bedarf angepasst werden.
Die TurnTab-Funktion wird verwendet, um Gruppen zu wechseln und basierend auf dem übergebenen Wert zu berechnen, welche Seitengruppe angezeigt werden soll. val=1 bedeutet Wechsel zur nächsten Gruppe, val=-1 bedeutet Wechsel zur vorherigen Gruppe, 0 bedeutet Wechsel zur ersten Gruppe und -2 bedeutet Wechsel zur letzten Gruppe. Benutzer wechseln die Gruppe, indem sie auf der Seite auf das ...-Symbol klicken.
Funktion TurnTab(val)
{
var nPage = 0;
if (val == 1) {
CurTab++;
nPage = (CurTab - 1) * PageTab + 1;
}
sonst if (val == -1) {
CurTab--;
nPage = (CurTab - 1) * PageTab + 1;
}
sonst wenn (val == 0) {
CurTab = 1;
nSeite = 1;
}
sonst wenn (val == -2) {
CurTab = Math.floor(TotalPage / PageTab) + 1;
nPage = (CurTab - 1) * PageTab + 1;
}
var carinfo = document.getElementById("div_trackpages");
var tabinfo = document.getElementById("div_trackpagetab");
var strInner = "";
strInner += "Homepage ";
strInner += "Vorherige Seite ";
strInner += "Total" + TotalPage + "Page ";
strInner += "Nächste Seite ";
strInner += "Letzte Seite ";
tabinfo.innerHTML = strInner;
strInner = "";
if (CurTab > 1) strInner += "... ";
for ( ; nPage<=CurTab*PageTab; nPage++) {
if (nPage <= TotalPage) {
strInner += ""+nPage+" "
}
}
if (nPage < TotalPage) strInner += "... ";
carinfo.innerHTML = strInner;
}
Die TurnPage-Funktion wird zum Wechseln der Seiten verwendet. val stellt die Anzahl der Seiten dar, zu denen gewechselt werden soll, und der Abfragebereich wird basierend auf der Anzahl der anzuzeigenden Seiten generiert, z. B. Abfragen der ersten 50 Datensätze, der Datensätze von 51 bis 100 und die Datensätze von 101 bis 150. . .
cscCustomAnalyst ist eine asynchron aufrufende Funktion und der Code für die Funktionsimplementierung wird unten veröffentlicht. „Method“, „SID“, „TIME1“, „TIME2“, „ROW1“, „ROW2“ sind alle Parameter, die zum Ausführen der Abfrage erforderlich sind. Methode wird verwendet, um zu bestimmen, welche Abfrage ausgeführt werden soll, „ROW1“, „ROW2“ bedeutet Der Bereich der abzufragenden Datensätze und andere Parameter können entsprechend den tatsächlichen Anforderungen angepasst werden. ShowCarTrack(val) ist eine Funktion, die Abfrageergebnisse verarbeitet. Die nach Abschluss des asynchronen Aufrufs erhaltenen Ergebnisse werden in dieser Funktion analysiert, verarbeitet und angezeigt. Dieser Teil des Codes wurde entsprechend der spezifischen Implementierung geschrieben, daher werde ich ihn hier nicht auflisten.
Funktion TurnPage(val)
{
if (Number(val) != CurPage) {
CurPage = Number(val);
var row1 = String((CurPage - 1) * 50 + 1);
var row2 = String(CurPage * 50);
var trackinfo = document.getElementById("div_trackpoint");
trackinfo.innerHTML = „Daten werden abgerufen, bitte warten…“;
_cscCustomAnalyst(["Methode", "SID", "TIME1", "TIME2", "ROW1", "ROW2"],
["GetCarTrack",, "80100117", t1, t2, row1, row2],
ShowCarTrack,onQueryError);
if (CurPage == 1) TurnTab(0);
if (CurPage == TotalPage) TurnTab(-2);
var statusinfo = document.getElementById("div_trackpage_status");
statusinfo.innerHTML = „Seite“ + CurPage + „Seite“;
}
}
NextPage wechselt zur nächsten Seite und ruft TurnPage auf, um sie zu implementieren. Wenn die nächste Seite die aktuelle Gruppe überschreitet, muss sie zur nächsten Gruppe wechseln.
functionNextPage()
{
if (CurPage < TotalPage) {
TurnPage(CurPage+1);
if ((CurPage + 1) > (CurTab * PageTab)) {
TurnTab(1);
}
}
}
PreviousPage wechselt zur vorherigen Seite und ruft TurnPage auf, um sie zu implementieren. Wenn die vorherige Seite die aktuelle Gruppe überschreitet, muss zur vorherigen Gruppe gewechselt werden.
Funktion PreviousPage()
{
if (CurPage > 1) {
TurnPage(CurPage-1);
if ((CurPage - 1) <= ((CurTab - 1) * PageTab)) {
TurnTab(-1);
}
}
}
_cscCustomAnalyst ist eine asynchrone Aufruffunktion, xhr.open("post","MapQuery.ashx", true); Dieser Absatz bedeutet, die Anfrage an die Seite MapQuery.ashx zu senden. Alle Serversegment-Datenbankoperationen werden in MapQuery.ashx ausgeführt.
Funktion _cscCustomAnalyst(paramNames, paramValues, onComplete, onError){
var xhr=_GetXmlHttpRequest();
xhr.open("post","MapQuery.ashx", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.onreadystatechange=function(){
var readyState=xhr.readyState;
if (readyState==4){
var status=xhr.status;
if(status==200){
var resultset = xhr.responseText;
if(resultset == null){
onComplete(null);
zurückkehren;
}
if(onComplete){
onComplete(resultset);
Ergebnismenge = null;
}
}
anders{
if(onError){
onError(xhr.responseText);
}
}
xhr.onreadystatechange = function(){};
xhr = null;
}
};
var paramString=null;
if(paramNames&¶mNames.length>0){
var params = new Array();
while(paramNames&¶mNames.length>0)
{
params.push(paramNames.shift()+"="+_ToJSON(paramValues.shift()));
}
paramString = params.join("&");
}
xhr.send(paramString);
};
Listen Sie abschließend eine Oracle SQL-Anweisung auf, die nach Mengenbereich abfragt: (fragen Sie die ersten 50 Datensätze ab)
WÄHLEN *
FROM (SELECT /*+ FULL(tablename)*/ fieldname, ROWNUM rn FROM tablename WHERE condition AND ROWNUM <= 50 ORDER BY field DESC) t2 where t2.rn >= 1;