2009-03-12 7 views
1

Ich habe eine Frage zu Funktionen mit jQuery. Ich habe eine Funktion, die, sobald der Browser bereit ist, die Funktion findet eine bestimmte Tabelle und fügt dann Hover & Klickfunktionalität hinzu.jQuery Funktion Frage

Ich versuche, diese Funktion von Code in einer ASP.NET-Seite hinterher zu rufen, aufgrund der Tatsache, dass, sobald jemand der Datenbank hinzufügt das Update-Panel eine Gridview auslöst und abruft (die Tabelle, die von der Funktion beeinflusst wurde) document.ready). Wenn es zurückkommt, ist es wieder der einfache Tisch.

Hier sind die ursprünglichen Funktionen:

$("#GridView1").find("tr").click(function(e) { 
       var row = jQuery(this) 
       //var bID = row.children("td:eq(0)").text(); 
       $('#tbHiddenBatchID').val(row.children("td:eq(0)").text()); 
       //Took out repetitive code, places values from table into modal 




       e.preventDefault(); 
       $('#modalContentTest').modal({ position: ["25%", "5%"] }); 
       //row.addClass('highlight'); 
       //$('#tbEdit').val(bID); 
      }); 

//here is the function that adds hover styling 
$("#GridView1").find("tr").click(function() { 
      return $('td', this).length && !$('table', this).length 
     }).css({ background: "ffffff" }).hover(
      function() { $(this).css({ background: "#C1DAD7" }); }, 
      function() { 
       $(this).css({ background: "#ffffff" }); 

      }); 

OK, was ich versucht ist, eine Funktion zu tun erstellen, rufen Sie es auf document.ready und auch in der Code-behind, wenn, nachdem die Datenbank aktualisiert wurde.

Hier ist, was ich getan habe:

function helpGrid() { 
      $("#GridView1").find("tr").click(function(e) { 
       var row = jQuery(this) 
       //var bID = row.children("td:eq(0)").text(); 
       $('#tbHiddenBatchID').val(row.children("td:eq(0)").text()); 
       // 
       e.preventDefault(); 
       $('#modalContentTest').modal({ position: ["25%", "5%"] }); 
       //row.addClass('highlight'); 
       //$('#tbEdit').val(bID); 
      }); 

//Haven't even tried to add the hover stlying part yet; can't get this to work. 
     } 

Wenn ich versuche, helpGrid zu nennen(); Ich erhalte eine Fehlermeldung, dass es nicht definiert ist ...

Offensichtlich bin ich ein newb jQuery aber ich habe jQuery in Aktion & ich es jetzt nach einer Antwort suchen Scheuern ...

Bitte helfen.

Danke !!!

+0

den asp.net-Tag vs einem asp und .net-Tag ... – RSolberg

+0

korrigiert Dank ... hat nicht aufgepasst ... – wali

Antwort

3

Da Sie ein Update-Panel verwenden, wird die gesamte Seite nicht postback und das document.ready-Zeug wird nie getroffen ... Unten können Sie eine Funktion hinzufügen, die am Ende des Updates ausgeführt wird, so resetMyTableStuff (); ist, wo Sie Ihre Magie tun wollen werden ...

Versuche so etwas wie dieses Hinzufügen ...

function pageLoad() { 
    if (!Sys.WebForms.PageRequestManager.getInstance().get_isInAsyncPostBack()) { 
     Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler); 
     Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(initializeRequest); 
    } 
} 

function endRequestHandler(sender, args) { 
    resetMyTableStuff(); 
} 

function initializeRequest(sender, args) { 
     //just in case you need to do it... 
} 
+0

Hmmmm ... interessant, spiele jetzt damit. LOL, das ist einer der Gründe, warum ich mit jQuery angefangen habe. Jetzt wo ist das asp. net Ajax cheatsheet .... – wali

+0

Wenn Sie das jQuery AJAX-Zeug verwenden würden, könnten Sie einfach die onSuccess-Funktion verwenden, um die Magie zu tun, aber 3 verschiedene Dinge zusammen zu mischen ist ein eigenes Unternehmen. So habe ich es gehandhabt. Ich habe diesen Code direkt aus meiner App gezogen. – RSolberg

+0

Danke. Ich habe Ihren Code in eine separate Datei geschrieben und konnte nach dem Senden von Daten vom Server eine Alarmfunktion aufrufen. Ich würde die jQuery onSuccess tun, aber die Schaltfläche ruft die Codebehind-Schaltfläche in asp.net auf. – wali