Question

J'ai une liste dans Sharepoint, à l'aide d'un nouveau formulaire personnalisé. J'ai ajouté un contrôle de formulaire de liste personnalisé ("Formulaire de nouvel élément" pour la liste), modifié le bouton SaveButton en bouton HTML de saisie standard, puis ajouté un bouton "onclick". 'événement qui est comme suit:

onclick="javascript: {ddwrt:GenFireServerEvent('__commit;__redirect={NewFormWizard2.aspx?id=}')}"

Ceci fonctionne comme dans enregistre les données et redirige vers la page NewFormWizard2.aspx? id =.

Comment puis-je obtenir l'ID de l'élément créé à transmettre à la page redirigée?

Ainsi, une fois le formulaire rempli, il serait redirigé vers NewFormWizard2.aspx? id = 23

Était-ce utile?

La solution 5

a trouvé une approche utilisant du javascript pur (JQuery) et le code SPAPI de http://darrenjohnstone.net/ .

La liste contient deux champs, title et BodyCopy

Je viens de créer un formulaire qui demande un titre et une question, les deux champs de texte, puis le bouton d'envoi appelle la fonction suivante: (notez que ServerAddress et LIST_question doivent être mis à jour selon vos propres données).

La fonction télécharge ensuite les détails à l'aide du service SOAP dans LISTS.ASMX et utilise la réponse pour obtenir l'ID du nouvel élément et rediriger la page.

var LIST_question = '{xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}';
var ServerAddress = 'http://xxx/';

function submitQuestion()
    {
    var title = new String($("#title").val());
    var t = new String($("#question").val());
    t=t.trim();
    if(t=="")
        return;

    title=title.trim();
    if(title=="")
        return;


    var lists = new SPAPI_Lists(ServerAddress) ;
    // 
    var newItem = { Title :  title, BodyCopy : t};
    var items = lists.quickAddListItem(LIST_question, newItem); 
    var id=-1; 
    if (items.status == 200) 
    { 
        var rows = items.responseXML.getElementsByTagName('z:row');
        if(rows.length ==1)
        {
            var r = rows[0];
            var id = r.getAttribute('ows_ID'); 
            window.location.href='DispForm.aspx?ID='+id;

        }
        else
        {
            alert("Error: No row added");
        }


    } 
    else
    { 

        alert('There was an error: ' + items.statusText); 
        return;
    }
}

Autres conseils

jtherkel était proche, mais il manquait un '}' à la fin de l'URL de redirection. J'ai utilisé un concat supplémentaire ci-dessous

<input type="button" value="Submit" name="btnSave" onclick="javascript: {ddwrt:GenFireServerEvent(concat('__commit;__redirect={lists/MyListName/DispForm.aspx?ID=',/dsQueryResponse/Rows/Row/@ID,'}'))}" />

Je ne sais pas exactement où l'ID existera sur la page à partir de laquelle vous hébergez le code Javascript. Est-ce qu'il apparaît dans la chaîne de requête ou dans un champ de la page?

Il n'y a rien dans la demande ou la réponse qui identifie l'élément. J'ai eu ce problème lors d'un test de charge Web.

Je ne peux que suggérer que vous créiez l'élément à l'aide des services Web, comme cela vous donne un retour xml.

Cette réponse ne résout pas le " nouveau formulaire " problème, mais cela pourrait aider les autres avec la syntaxe des écrans contenant des éléments de liste existants.

J'ai testé cela rapidement dans mon environnement SharePoint (MOSS 2007).

onclick = " javascript: {ddwrt: GenFireServerEvent (concat ('__ commit; __ redirect; {NewFormWizard2.aspx? id =', '}, dsQueryResponse / Rows / Row / @ ID))}} "

La syntaxe concat est une instruction XSLT qui indique au processeur de combiner les valeurs entre guillemets simples. J'ai adapté cette réponse à partir des informations trouvées ici.

Chargement de valeurs dans un formulaire de liste personnalisé http://wssdevelopment.blogspot.com/2007_04_01_archive.html

J'espère que cela vous sera utile: 1- Dans SharePoint Designer, créez une nouvelle page, appelez-la par exemple " LastItem.aspx " et placez un affichage de données dessus avec une vue de formulaire unique pour l'élément de liste de destination. 2-Limitez la pagination à un seul enregistrement, définissez le tri par ID et par ordre décroissant, puis filtrez la liste pour afficher uniquement l'élément créé par [utilisateur actuel]. 3-Vous n'avez pas besoin de transmettre de chaîne de requête à cette page. remplacez simplement la valeur par défaut "OK". bouton dans NewForm.aspx de la liste avec un bouton d’entrée HTML standard et ajoutez-le à sa définition "onclick =" javascript: {ddwrt: GenFireServerEvent (concat ('__ commit; __ redirect = {LastItem.aspx} "}). Après la soumission un nouvel élément à répertorier, vous serez redirigé vers une vue d'édition de l'élément créé. Vous pouvez faire de même pour le bouton Enregistrer dans LastItem.aspx pour rediriger vers une autre page après avoir cliqué sur le bouton Enregistrer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top