2009-04-29 8 views
5

J'ai une liste dans Sharepoint, en utilisant un nouveau formulaire personnalisé J'ai ajouté un contrôle de formulaire de liste personnalisé ("New item form" pour la liste) et changé le SaveButton en un bouton HTML d'entrée standard, et a ajouté un événement « onclick » qui est la suivante:Sharepoint Liste de redirection avec nouvel ID

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

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

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

Ainsi, une fois le formulaire rempli, il redirigerez à NewFormWizard2.aspx? Id = 23

Répondre

0

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

la liste contient deux champs, le titre et BodyCopy

J'ai thewn crea Dans un formulaire qui demande un titre et une question, les deux champs de texte, le bouton submit appelle la fonction suivante: (notez que ServerAddress et LIST_question doivent être mis à jour avec vos propres détails).

La fonction télécharge ensuite les détails en utilisant le service SOAP dans LISTS.ASMX et en utilisant la réponse obtient l'ID du nouvel élément et redirige 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; 
    } 
} 
0

Je ne sais pas où l'ID existera sur la page que vous hébergez le Javascript de. Apparaît-il dans la chaîne de requête ou dans un champ de la page?

Rien dans la requête ou la réponse n'identifie l'élément. J'ai eu ce problème lors de certains tests de chargement Web.

Je ne peux que vous suggérer que vous créez l'élément en utilisant les services web comme cela à vous donne un peu de retour xml.

+0

Ceci est pour un nouvel élément de liste en tant que tel, il n'a pas un ID sur la page. Je voudrais bien que l'ID serait créé lors de la publication, donc l'URL pour la redirection devrait être "rempli" avec l'ID du nouvel article après que l'article a été engagé. Est-ce que je demande beaucoup ici? Cordialement – TheRealQuagmire

0

Cette réponse ne résout pas le problème de la "nouvelle forme", mais elle peut aider d'autres personnes ayant la syntaxe pour les écrans qui contiennent 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/lignes/ligne/@ 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 infos que j'ai trouvées ici.

Valeurs de chargement dans un formulaire personnalisé Liste http://wssdevelopment.blogspot.com/2007_04_01_archive.html

0

J'espère que ce serait helpfull: 1- Dans SharePoint Designer Créer une nouvelle page, appelez-le par exemple « LastItem.aspx » et placez un dataview dessus avec une seule vue de formulaire pour l'élément de liste de destination. 2-Limiter la pagination à un seul enregistrement, définir le tri par ID et décroissant et filtrer 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. il suffit de remplacer le bouton "OK" par défaut dans NewForm.aspx de la liste avec un bouton d'entrée HTML standard et d'ajouter ceci à sa définition "onclick =" javascript: {ddwrt: GenFireServerEvent (concat ('__ commit; __ redirect = {LastItem.aspx} Après avoir soumis un nouvel élément à la liste, vous serez redirigé vers une vue d'édition de l'élément créé Vous pouvez faire la même chose pour le bouton de sauvegarde dans LastItem.aspx pour rediriger vers une autre page après avoir cliqué sur le bouton de sauvegarde

2

jtherkel était proche, mais il manquait un '}' à la fin de l'URL de redirection. J'ai utilisé une concaténation 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,'}'))}" /> 
Questions connexes