2009-04-29 19 views
5

Tengo una lista dentro de Sharepoint, usando un nuevo formulario personalizado He agregado un control de formulario de lista personalizado ("Formulario de nuevo artículo" para la lista) y cambié SaveButton a un botón HTML de entrada estándar. y se añade un evento 'onclick' que es como sigue:Redirección de lista de Sharepoint con nueva identificación

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

Esto funciona como en guarda los datos y la redirige a la página de id = NewFormWizard2.aspx?.

¿Cómo puedo obtener que la ID del elemento creado pase a la página redirigida?

Así, una vez completado el formulario sería redirigir a NewFormWizard2.aspx? Id = 23

Respuesta

0

encontró un enfoque usando javascript puro (JQuery) y el código de SPAPI http://darrenjohnstone.net/.

la lista contiene dos campos, título y BodyCopy

he thewn crea ted un formulario que solicita un título y una pregunta, ambos campos de texto, luego el botón de enviar llama a la siguiente función: (tenga en cuenta que ServerAddress y LIST_question deben actualizarse a sus propios detalles).

La función luego carga los detalles usando el servicio SOAP dentro de LISTS.ASMX y usando la respuesta obtiene el ID del nuevo elemento y redirige la página.

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

No estoy seguro de donde existirá el ID de la página que aloja el Javascript de. ¿Aparece en la cadena de consulta o en un campo de la página?

No hay nada en la solicitud o respuesta que identifique el artículo. He tenido este problema al hacer algunas pruebas de carga web.

Solo puedo sugerir que crees el elemento usando los servicios web, ya que a este te da un xml de devolución.

+0

Se trata de un nuevo elemento de la lista, como tal, no tiene un id de la página. Hubiera pensado que la ID se crearía después de la devolución, por lo que la URL para la redirección debería completarse con la ID del nuevo elemento una vez que se haya comprometido. ¿Estoy pidiendo mucho aquí? Saludos – TheRealQuagmire

0

Esta respuesta no resuelve el problema de la "nueva forma", pero podría ayudar a otros con la sintaxis de las pantallas que contienen elementos de lista existentes.

Probé esto rápidamente en mi entorno de SharePoint (MOSS 2007).

onclick = "javascript: {ddwrt: GenFireServerEvent (concat ('__ cometer; __ redirigir = {id = NewFormWizard2.aspx?',/DsQueryResponse/filas/fila/@ ID))}"

La sintaxis concat es una instrucción XSLT que le dice al procesador que combine los valores encerrados en comillas simples. Adapté esta respuesta de la información que encontré aquí.

Carga de Valores en forma de lista personalizada http://wssdevelopment.blogspot.com/2007_04_01_archive.html

0

espero que esto sería atento: 1- En SharePoint Designer Crear una nueva página, lo llaman por ejemplo "LastItem.aspx" y colocar un DataView en él con una única vista de formulario para el elemento de lista de destino. 2-Limita la paginación a solo un registro, configura la clasificación por ID y desciende y filtra la lista para mostrar solo el elemento creado por [usuario actual]. 3-Ahora no es necesario pasar ninguna cadena de consulta a esta página. simplemente reemplace el botón predeterminado "Aceptar" en NewForm.aspx de la lista con un botón estándar de entrada HTML y agréguelo a su definición "onclick =" javascript: {ddwrt: GenFireServerEvent (concat ('__ commit; __ redirect = {LastItem.aspx}) ". Después de enviar un nuevo elemento a la lista, se le redirigirá a una vista de edición del elemento creado. Puede hacer lo mismo para el botón Guardar en LastItem.aspx para redirigir a otra página después de hacer clic en el botón Guardar.

2

jtherkel estaba cerca, pero faltaba un '}' en el final de la URL de redirección. He utilizado un concat adicional debajo

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