GetElementById retourne null

Signaler
Messages postés
2
Date d'inscription
vendredi 5 décembre 2008
Statut
Membre
Dernière intervention
18 mars 2012
-
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
-
slt tout le monde.
Je travaille sur un projet SharePoint 2010, j'ai un SPGridView et un fichier *.js qui doit détecter mon contrôle. Mon problème donc est avec getElementById(), qui me retourne null alors que je suis certain d'avoir un ID correspondant dans mon fichier *.ascx... C'est la fonction getElementById("GridViewList1") qui ne marche pas.

voici mon code ascx:


























Ajouter un salarié





et voici le code behind:

public void Forms_handler()
{
SPSite spSite = new SPSite(SPContext.Current.Web.Url);
SPWeb web = spSite.OpenWeb();
SPList ListVacation = web.Lists["Salariés"];
string editForm = String.Concat(web.Url, "/", ListVacation.Forms[PAGETYPE.PAGE_EDITFORM].Url);
string titreModif = "Modifier un salarié";
string mode = "edit";
string scriptfunctionFP = "OpenDialog('" + editForm + "','" + titreModif + "','" + mode + "')";

NewItem.Attributes.Add("onclick", scriptfunctionFP);
}

et enfin le JS:

function OpenDialog(URL, titre, mode) {
if (mode == "edit") {
var div = document.getElementById("GridViewList1"); //get element from specific div
var inputs = document.getElementsByName("saf");
.......
}

Merciiii

3 réponses

Messages postés
2
Date d'inscription
vendredi 5 décembre 2008
Statut
Membre
Dernière intervention
18 mars 2012

svp aidez moi :(
Messages postés
15032
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
12 mai 2021
94
Yop,
Je déplace dans la section ASP.


@+
Buno, Admin CS
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
Salut,

GridViewList1 est l'ID côté serveur, il est diffère côté client (càd côté Javascript). Deux possibilités :

- ta page ne bougera jamais plus et n'a pas vocation à être encapsulée : alors tu peux lancer ta page, regarder le code source, et récupérer l'ID côté client généré par ton serveur ASP.NET. C'est franchement pas la manière la plus propre, mais ça fonctionne.

- ta page pourrait être réutilisé d'une autre manière, ou simplement tu veux faire les choses proprement : alors tu dois inscrire l'ID côté client depuis le serveur, qui lui le connait. Pour cela tu devras utiliser un code du genre :
Page.ClientScript.RegisterClientScriptBlock(
this.GetType(),
"varGridViewList1",
"var gvl1 = '" + GridViewList1.ClientID + "';",
true);

Dans ton Javascript tu accéderas alors à ton objet avec l'appel suivant :
<script type="text/javascript">
// [..]
var maGridViewList = document.getElementById(gvl1);
// [..]
</script>