2012-03-28 8 views
0

Ich habe eine Webseite, die die Daten mithilfe des Datatable-Plugins in Table tableRepriceResponseFiles anzeigt. Hier mache ich im Wesentlichen die folgenden zwei Dinge im Javascript.So entfernen Sie diese Nachricht "Ein Skript auf dieser Seite verursacht, dass Ihr Webbrowser langsam ausgeführt wird"

1.If die NoOfDays> 7, unterscheiden Sie den Text in der roten Farbe

2.Datatable Paginierung

Der Code unten die folgende Skriptfehlermeldung angezeigt wird.

Stoppen Dieses Skript ausführen? "Ein Skript auf dieser Seite führt dazu, dass Ihr Webbrowser langsam ausgeführt wird. Wenn es weiterhin ausgeführt wird, reagiert Ihr Computer möglicherweise nicht mehr auf."

Wenn ich eine der beiden folgenden Dinge kommentiere, dann wird diese Skriptfehlermeldung nicht angezeigt. Aber ich möchte die Textfarbe zu Rot ändern und Seitenumbruch anwenden.

Ich frage mich, wie ich diese Nachricht loswerden kann? Irgendwelche Eingaben werden sehr geschätzt.

<script type="text/javascript"> 
$(document).ready(function() {  

//If the NoOfDays > 7, differentiate the text in Red color 
       $('#RepriceResponseFiles td.clsDays').each(function() { 
        if (parseInt($(this).text()) > 7) { 
         $(this).css("color", "red"); 
        } 
       }); 

       //Datatable Pagination 
       $('#RepriceResponseFiles').dataTable(
       { 
        "sPaginationType": "full_numbers", 
        "aLengthMenu": [[10, 25, 50, 100, -1], [10, 25, 50, 100, "All"]], 
        "iDisplayLength": 100 
       }); 


}); 
</script> 
+1

Haben Sie diese Frage nicht schon gestern gestellt? Einer der Kommentare war "Wie groß ist dein Tisch?".Wenn Sie versuchen, auf einer langen Tabelle clientseitige Paging- und Zeilenfarben zu erstellen, werden Sie auf diese Nachricht stoßen. Wenn die Tabelle ausreichend groß ist (hier gibt es keine feste Nummer), sollten Sie diese Serverseite in Betracht ziehen. Der CSS-Stil sollte einfach durch Übergeben eines zusätzlichen Parameters in Ihrem Ansichtsmodell ausgeführt werden und verhindert, dass JQuery die Tabelle durchläuft, um einen Stil anzuwenden. – Tommy

+0

Ja. Ich habe gestern gefragt. Jetzt habe ich die Antwort bekommen! Vielen Dank. Ich kümmere mich darum von ViewModel. Nicht sicher, wie man das als die Antwort markiert! – Rita

+0

Sieht aus wie ... Es kommt immer noch. Ich denke, ich muss es tun Serverside. – Rita

Antwort

1

Dinge Client-Seite tun kann schön sein, aber abhängig von der Größe der Tabelle, JQuery und die damit verbundenen Plugins Stile anwenden, Tabelle Paginierung und Sortierung kann ziemlich viel Zeit in Anspruch nehmen. Es gibt hier keine "harte Nummer" auf der Größe eines großen Tisches. Einige Dinge können Sie versuchen:

  1. Der Stil, dass Ihre Anwendung sollte sehr einfach zu Server-Seite zu tun. Fügen Sie Ihrem Ansichtsmodell eine Eigenschaft namens style hinzu und verwenden Sie diese zum Festlegen der Zeilenfarbe, während Sie Ihr Ansichtsmodell durchlaufen.

  2. Das Paging-Zeug wird schwieriger zu implementieren Serverseite (Erstellen Sie eine Aktionsmethode, die (int PageNumber, int Count) dauert. Es gibt viele SO Post auf dies tun, und Sie sollten eine anständige Leistungssteigerung auf Ihrer Seite Ladezeiten sehen Wenn das Skript läuft, Example Post 1, Example Post 2 (Wenn Sie MVC3 verwenden, sieht es so aus, als ob es eine WebGrid that can take care of this for you gibt, aber ich habe es nicht benutzt und Sie müssen ein wenig arbeiten, um zu sehen, ob es die richtigen Sachen macht Sie)

  3. Vielleicht ist das JQuery-Plugin, das Sie verwenden, einfach nicht gut? Ich weiß nicht, was Sie verwenden, aber Sie könnten mit einigen anderen spielen und sehen, ob Sie bessere Leistung bekommen.

Die Grundidee für Punkt 2 würde wie folgt aussehen:

public ActionResult GetPagedData(int pageNumber, int ItemCount){ 
    return PartialViewResult("MyGrid", 
    this.GetMyItems().skip((PageNumber -1) * ItemCount).Take(ItemCount)); 
} 

Insgesamt aber für große Datensätze die JQuery Zeug wirklich schön ist, werden Sie viel viel bessere Leistung zu tun Paging und Sortieren von Server-Seite erhalten . Dies ist, wo ich denke, dass Ihre Verlangsamung kommt. Wie diese JQuery-Plugins funktionieren, der Server sendet das gesamte Dataset und JQuery zeigt/versteckt die Zeilen basierend auf den von Ihnen festgelegten Optionen. Indem Sie diese Paginierungsserver-Seite ausführen, senden Sie nur die erforderlichen Daten an den Client für die Seite der Daten, die sie betrachten. Dies führt dazu, dass weniger Daten vom Server gesendet werden und die Warnung, die Sie sehen, eliminieren sollte. Sie können immer noch die AJAX-Anfrage verwenden, um die nächste/vorherige Seite von Daten zu erhalten, um das AJAX-y-Feeling des Plugins zu erhalten.