views:

193

answers:

2

I got a JQuery/CSS tabcontrol, which currently handle 4 tabs, containing gridviews. I'd like the gridview to be loaded, when you hit the tabs. This reduces the loading time of the page, as some of the gridview's sprocs take some time. The gridviews need to load once, they don't have to be updated each time you open the specific tab.

JQuery:

$(document).ready(function() 
{ 
    //When page loads... 
    $(".tab_content").hide(); //Hide all content 
    $("ul.tabs li:first").addClass("active").show(); //Activate first tab 
    $(".tab_content:first").show(); //Show first tab content 

    //On Click Event 
    $("ul.tabs li").click(function() 
    { 
        $("ul.tabs li").removeClass("active"); //Remove any "active" class 
        $(this).addClass("active"); //Add "active" class to selected tab 
        $(".tab_content").hide(); //Hide all tab content 

        var activeTab = $(this).find("a").attr("href"); //Find the href attribute value to identify the active tab + content 
        $(activeTab).fadeIn(); //Fade in the active ID content 
        return false; 
    }); 
});

Now I just started using JQuery, so I really don't know to handle this... Anyone ideas?

A: 

Hey,

If you want to do everything on the server, you need an update panel, and force a postback using __doPostBack so that the server can process the request... You may also be able to use $.ajax to do this as well...

Otherwise, do it all on the client, stream the data to the client from a web service, and build the table on the client.

HTH.

Brian
Do you got an example of handling an update panel?
Joris
Well, I've never mixed the two (JQuery and server), but what you want to try is to issue a __doPostBack("<%= grid1.UniqueID %>", "<command>"), this populates __EVENTTARGET and __EVENTARGUMENT fields accessible via Request.Form, so at the bare minimal, you can use these to determine which grid to populate in the postback. Wrap your tabs/grids in one big update panel with updatemode="always" (should be default).
Brian
A: 

I had a similar issue. What i did was create a button to load the gridview, and in the select event for the jquery tabs I click those buttons. Something like this:

$("#tabs").tabs({
        select: function (event, ui) {
            switch (ui.index) {
                case 0:
                    $("#<%= btnOne.ClientID %>").click();
                    break;
                case 1:
                    $("#<%= btnTwo.ClientID %>").click();
                    break;
                case 2:
                    $("#<%= btnThree.ClientID %>").click();
                    break;
            }
        }
 });
Jorden
wow, that's actually very inventive! thanks!About the buttons, you made it `button.visible = false`?
Joris