2009-07-14 6 views
0

J'ai un contrôle utilisateur qui a un gridview avec pagination. La pagination est pilotée par une source de données d'objet, elle utilise donc les événements dopostback par défaut. Je veux utiliser jquery pour charger l'usercontrol dans un onglet via ajax parce que j'ai plusieurs onglets que je ne veux pas charger tous en même temps et prendre tous les hits de la base de données s'ils ne sont pas nécessaires.jquery ajax onglets avec asp.net user control gridview

J'ai donc placé ce contrôle utilisateur sur un fichier vide aspx et défini href = sur ce fichier aspx. Le gridview se charge bien et a l'air bien. Le problème que je rencontre est lorsque j'essaie de changer de page sur le gridview, le postback va à l'URL du fichier aspx et non à la page où je suis avec les onglets. Je sais que cela est censé se produire, mais je me demande ce que je peux faire pour que je puisse revenir à la bonne page et travailler dans les onglets.

Il ne fonctionne pas avec et sans un panneau de mise à jour autour.

Toute aide est appréciée.

Répondre

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" /> 

serveur:

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

où est un sel propriété publique de la classe page:

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

Vous pouvez utiliser le même fichier ASPX pour différents onglets en utilisant le paramètre url:

MyTabs.aspx?tab=gridViewOnly 

Ensuite, sur le côté du serveur, vous pouvez vérifier quel onglet doit être montré:

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

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