Fonction javascript a partir du code behind

amel468 Messages postés 34 Date d'inscription vendredi 10 janvier 2003 Statut Membre Dernière intervention 10 avril 2006 - 20 août 2004 à 13:28
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 - 20 août 2004 à 15:05
Bonjour,

J'essaye de construire un tableau qui doit posseder les propriétés extend et collapse.
Ce tableau se remplit a l'aide des données d'une table oracle et suivant les parametres sélectionnés par l'utilisateur.

je gere l'extend et collapse grace a des fonctions javascript, qui se declanchent lors de l'evenement onclick des balises <td> de mon tableau.
Le probleme, c'est que je n'arrive pas a faire fonctionner mes fonctions javascript....quand je clique sur les case, il ne se passe abolument rien...

est-ce que c'est parceque je les appelle d'une mauvaise facon ?

voici le code que j'utilise:

au moment de créer le tableau, dans le code behind

while(dr.Read())
{
if (lno > 1) //lno = niveau de la ligne dans l'arbre
{
//ligne 1 puis a chaque passage du dr avance d'une ligne
Page.Response.Write("<TR class=level" + lno.ToString() + " style="display: none;">");
//colonne 1
Page.Response.Write("<TD onclick="showrow(this.parentNode.rowIndex)" class="level" + lno.ToString() + "">" + dr.GetString(2));
}
else //=si niveau 0
{
//ligne 1 puis a chaque passage du dr avance d'une ligne
Page.Response.Write( "<TR class=level" + lno.ToString() + " >");
//colonne 1
Page.Response.Write( "<TD onclick="showrow(this.parentNode.rowIndex)" class="level" + lno.ToString() + "">" + dr.GetString(2) );
}

et voici la fonction qui se trouve sur la page page aspx, entre les balises script du code html

function showrow(rowid)
{
var currow , level, childlevel

currow = rowid
level = parseInt(ClasTab.rows[currow].cells[15].innerHTML)

currow++;

if (ClasTab.rows[currow].style.display == "none")
{
mode = "open"
}
else
{
mode = "close"
}

if (currow < maxrows)
{
childlevel = parseInt(ClasTab.rows[currow].cells[15].innerHTML)

while ( childlevel > level) {if ((childlevel level+1) || mode "close")
{
toggleRow(ClasTab.rows[currow])
}
currow++;
if (currow == maxrows) {break}
childlevel = parseInt(ClasTab.rows[currow].cells[15].innerHTML)
}
}
}

Merci beaucoup de votre aide !!

3 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
20 août 2004 à 13:50
Au debut je pensais que la balise TD ne possedait pas l'evenement onclick, j'ai verifié mais si, j'en profite donc pour vous montrez cette adresse : http://giminik.developpez.com/xhtml/index.php?idBalise=68
qui pourra peut etre vous etre utile :)

mais retournous à notre problème : pour le resoudre il suffit tout simplement de faire

Page.Response.Write("<TD onclick="javascript:showrow(this.parentNode.rowIndex)" class="level" + lno.ToString() + "">" + dr.GetString(2));

normalement ca devrait marcher.

Petite astuce au passage, tu n'as pas besoin d'ecrire Page.Response.Write, Response.Write suffit :)

J'espere que ca aura résolu ton problème.

Sinon pour tes questions futures concernant asp je te conseil d'aller voir sur la section asp de CodeS-SourceS : www.aspfr.com

@+

Cyril
0
amel468 Messages postés 34 Date d'inscription vendredi 10 janvier 2003 Statut Membre Dernière intervention 10 avril 2006 1
20 août 2004 à 14:09
Merci bcp pour ta réponse, malheureusement ca ne fonctionne pas...

Pour l'implifier, je n'ai pas tout ecrit dans le post précedent.

au depart, j'utilise une fonction fulltree qui, si la variable fullmode est a expand affiche tout l'arbre, sinon n'affiche que les niveau 0, ainsi que la fonction showMode qui ne sert qua'a afficher un (+) ou un (-) suivant si l'arbre est deroule ou pas.

Je les appelle ainsi :

Page.Response.Write("<TR><TD id=PersonType name=PersonType valign=CENTER onclick="javascript:fulltree('" + title + "')" >");
Page.Response.Write(title);
Page.Response.Write("<SCRIPT language="JavaScript" type="text/javascript">showMode()</SCRIPT>");
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
20 août 2004 à 15:05
si tu fais ca :

Page.Response.Write("<TD onclick="javascript:alert('Ca marche !!!')" class="level" + lno.ToString() + "">" + dr.GetString(2));

est-ce que tu as un message lorsque tu cliques sur ton TD ?

J'ai pas compris le code que tu viens de me donner, je l' ai compris mais je vois pas la difference avec le premier :-(

si le bout de code que je t'ai donné affiche un message, c'est que ton problème se situe au niveau de javascript plutot que d'asp.net essaye de trouver des infos ici : javascriptfr.com

Cyril
0
Rejoignez-nous