2009-07-14 14 views
0

Ich habe ein Benutzer-Steuerelement, das eine Gridview in es mit Paging hat. Das Paging wird von einer Objektdatenquelle gesteuert, sodass standardmäßig die Dopostack-Ereignisse verwendet werden.jquery ajax tabs mit asp.net user control gridview

Ich möchte jquery verwenden, um die Benutzersteuerung in eine Registerkarte über Ajax zu laden, da ich mehrere Registerkarten habe, die ich nicht alle auf einmal laden möchte und alle Datenbanktreffer nehmen, wenn sie nicht benötigt werden.

Also legte ich dieses Benutzersteuerelement auf eine leere aspx-Datei und legen Sie die href = der Registerkarte auf diese Aspx-Datei. Die Gridview lädt gut und sieht gut aus.

Das Problem, auf das ich gestoßen bin, ist, wenn ich versuche, Seiten in der Gridview zu ändern, geht das Postback auf die URL der aspx-Datei und nicht die Seite, die ich mit den Registerkarten bin. Ich weiß, dass dies passieren soll, aber ich frage mich, was ich tun kann, um es so zu machen, dass es zurück auf die richtige Seite posten und innerhalb der Tabs arbeiten kann.

Es funktioniert nicht mit und ohne ein Updatepanel um es herum.

Jede Hilfe wird geschätzt.

Antwort

2

Client:

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

     var hdn = document.getElementById('<%= tabid.ClientID %>'); 

     var tbs = $("#tabs").tabs({ 
      select: function (event, ui) {      
       if (hdn) hdn.value = ui.index; 
      } 
     }); 

     tbs.tabs('select', <%= sel %>); 

    }); 
</script> 

<asp:HiddenField ID="tabid" runat="server" /> 

Server:

method Tabs.Page_Load(sender: Object; e: EventArgs); 
begin 
    if (page.isPostBack) then 
     sel := tabid.Value 
    else 
     sel := "0"; 
end; 

wo sel eine öffentliche Eigenschaft der Seite Klasse:

Tabs = public partial class(System.Web.UI.Page) 
    public property sel : String := '0'; 
0

Sie könnten die gleiche aspx-Datei für verschiedene Registerkarten durch URL-Parameter verwenden:

MyTabs.aspx?tab=gridViewOnly 

Dann auf der Serverseite können Sie überprüfen, welche Reiter angezeigt werden muss:

string tab = Request.Params["tab"]; 

if(tab == "gridViewOnly") 
{ 
// make the gridview visible and do only needed calls to DB 
}