Pergunta

Eu tenho uma lista dentro do SharePoint, usando um novo formulário personalizado Eu adicionei um controle de formulário de lista personalizada ( "formulário de item de Novo" para a lista) e mudou o SaveButton a um botão de entrada HTML padrão, e acrescentou uma 'onclick' evento que é a seguinte:

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

Isso funciona como no guarda os dados e redireciona para a NewFormWizard2.aspx? Id = página.

Como faço para obter o ID do item criado para ser passado para a página redirecionada?

Assim, uma vez que o formulário é preenchido seria redirecionar para NewFormWizard2.aspx? Id = 23

Foi útil?

Solução 5

encontraram uma abordagem usando javascript puro (JQuery) eo código SPAPI de http://darrenjohnstone.net/ .

A lista contém dois campos, título e bodycopy

Eu thewn criado um formulário que pede um título e uma pergunta, dois campos de texto, em seguida, no botão enviar chama a seguinte função: (note que ServerAddress e necessidade LIST_question a ser atualizado a seus próprios detalhes)

A função, em seguida, envia os dados usando o serviço SOAP dentro Lists.asmx e usando a resposta recebe o ID do novo item e redireciona a 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;
    }
}

Outras dicas

jtherkel estava perto, mas estava faltando um '}' no final do URL de redirecionamento. Eu usei um concat adicional abaixo

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

Não tenho a certeza onde o ID existirá na página que você hospedar o Javascript partir. Será que ela aparecer na querystring ou em um campo na página?

Não há nada no pedido ou resposta que irá identificar o item. Eu tive esse problema quando fazer algum loadtesting web.

Eu só posso sugerir que a sua criar o item usando os webservices a que está em dá-lhe alguma xml retorno.

Esta resposta não resolve a questão "nova forma", mas pode ajudar os outros com a sintaxe para as telas que contêm itens lista existente.

Eu testei isso rapidamente no meu (2007 MOSS) ambiente SharePoint.

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

A sintaxe concat é uma instrução XSLT que conta o processador para combinar os valores entre aspas simples. Eu adaptei esta resposta a partir de informações que eu encontrei aqui.

A carregar valores em uma lista formulário personalizado http://wssdevelopment.blogspot.com/2007_04_01_archive.html

Espero que isso seria útil: 1- No SharePoint Designer cria nova página, chamá-lo, por exemplo, "LastItem.aspx" e coloque um dataview nele com uma visão única forma do item da lista de destino. 2-Limit paginação para apenas um registro, defina a classificação por ID e descendente e filtrar a lista do item mostram apenas que é criado por [usuário atual]. 3 Agora você não precisa passar qualquer seqüência de consulta a esta página. basta substituir o botão padrão "OK" em NewForm.aspx da lista com um botão de entrada HTML padrão e adicione à sua definição "onclick =" javascript: {ddwrt: GenFireServerEvent (concat ( '__ cometer; __ redirect = {} LastItem.aspx ". Depois de enviar um novo item à lista, você será redirecionado para uma visualização de edição do item criado. Você pode fazer o mesmo para salvar botão no LastItem.aspx para redirecionar para outra página depois de clicar no botão salvar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top