J'ai du code à changer. il est construit par d'autres, et pas très soigné ...Onglets Javascript: appel d'événement onclick
Il y a un tabcontrol javascript, contenant 4 onglets, qui contient des gridviews. Tous les 4 gridviews sont construits pendant le chargement de la page, mais je veux qu'ils se chargent, lorsque vous activez les onglets (comme il est possible de regarder le côté, alors que vous n'avez pas besoin des grilles spécifiques)
Donc, ma question est: comment appeler un événement (qui charge le gridview) à partir d'un onglet javascript?
comment les onglets sont générés: (code généré, je sais, horrible)
var obj = 0; var oid = 0; var otb = 0; var myTabs = new Array(); var myTabitems = new Array(); var myTabitem = new Array(); var myTabContent = new Array(); var myLists = new Array();function showTabContent(tab) { tb = tab.obj; id = tab.nr; if (myTabs[tb].oid != -1) { myTabs[tb].myTabContent[myTabs[tb].oid].style.display = 'none'; myTabs[tb].myTabitem[myTabs[tb].oid].className -= " active"; } myTabs[tb].myTabContent[id].style.display = 'block'; myTabs[tb].myTabitem[id].className += " active"; myTabs[tb].oid = id; }
function boTabs() { var myBlocks = new Array(); myBlocks = document.getElementsByTagName("div"); var stopit = myBlocks.length; for (var g = 0; g < stopit; g++) { if (myBlocks[g].className == "tabs") { myTabs.push(myBlocks[g]); } } var stopit2 = myTabs.length; for (var i = 0; i < stopit2; i++) { myTabs[i].myLists = myTabs[i].getElementsByTagName("ul"); if (myTabs[i].myLists[0].className == "tabs") { myTabs[i].myTabitems = myTabs[i].myLists[0].getElementsByTagName("li"); } var stopit3 = myTabs[i].myTabitems.length; myTabs[i].obj = i; myTabs[i].myTabitem = new Array(); myTabs[i].myTabContent = new Array(); for (var j = 0; j < stopit3; j++) { myTabs[i].myTabitem.push(myTabs[i].myTabitems[j]); myTabs[i].myTabitem[j].nr = j; myTabs[i].myTabitem[j].obj = i; myTabs[i].myTabitem[j].onclick = function() { showTabContent(this); }; } var myTabDivs = myTabs[i].getElementsByTagName("div"); for (var j = 0; j < myTabDivs.length; j++) { if (myTabDivs[j].className == "tabcontent") { myTabs[i].myTabContent.push(myTabDivs[j]);
} } myTabs[i].myTabitem[0].className += " active"; myTabs[i].myTabContent[0].style.display = 'block'; myTabs[i].oid = 0; myTabDivs = null; } myBlocks = null;
} onload = boTabs;
Eh bien, le GridView est lié au code sous-jacent (C#), il a gagné » t être construit avec JS ... J'ai réussi à faire le tabcontrol avec Jquery et CSS. Je vais le poster comme une réponse ci-dessous ... à ce moment les 4 gridviews sont liés à Page_Load, mais, comme il faut du temps pour lancer le sproc derrière le gridview, cela prend quelques secondes. Par conséquent je veux les charger sur le tabclick ... Le UpdatePanel semble le meilleur chemin ... – Joris
Oui, c'est très maniable; et vous pouvez stocker dans un champ caché l'index sélectionné de l'onglet, pour savoir quelle grille charger. –