Pregunta

Tengo una lista dentro de Sharepoint. Al usar un formulario nuevo personalizado, agregué un control de formulario de lista personalizado (" Formulario de nuevo elemento " para la lista) y cambié SaveButton a un botón HTML de entrada estándar, y agregué un 'onclick' 'evento que es el siguiente:

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

Esto funciona igual que guarda los datos y redirige a la página NewFormWizard2.aspx? id =.

¿Cómo obtengo el ID del elemento creado para pasar a la página redirigida?

Por lo tanto, una vez completado el formulario, se redireccionará a NewFormWizard2.aspx? id = 23

¿Fue útil?

Solución 5

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

La lista contiene dos campos, título y BodyCopy

He creado un formulario que solicita un título y una pregunta, ambos campos de texto, luego el botón 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 al usar la respuesta se obtiene el ID del nuevo elemento y se 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;
    }
}

Otros consejos

jtherkel estaba cerca, pero faltaba un '}' al final de la url de redireccionamiento. He utilizado un concat extra abajo

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

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

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

Solo puedo sugerirle que cree el elemento utilizando los servicios web, ya que le da un xml de devolución.

Esta respuesta no resuelve la " nueva forma " problema, 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 ('__ commit; __ redirect = {NewFormWizard2.aspx? id =', / dsQueryResponse / Rows / Row / @ ID))) "

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

Carga de valores en un formulario de lista personalizado http://wssdevelopment.blogspot.com/2007_04_01_archive.html

Espero que esto sea de ayuda: 1- En SharePoint Designer, cree una página nueva, llámela por ejemplo " LastItem.aspx " y coloque una vista de datos en ella con una vista de formulario único para el elemento de la lista de destino. 2-Limite la paginación a solo un registro, establezca la clasificación por ID y descendente y filtre la lista para mostrar solo el elemento creado por [usuario actual]. 3-Ahora no necesita pasar ninguna cadena de consulta a esta página. simplemente reemplaza el valor predeterminado " OK " después de enviar Un nuevo elemento para listar será redirigido a una vista de edición del elemento creado. Puede hacer lo mismo con el botón Guardar en LastItem.aspx para redirigir a otra página después de hacer clic en el botón Guardar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top