none
[ModalDialog] Redirect para View AllItems.aspx com Dialog do DispForm.aspx aberta. Como fazer? RRS feed

  • Pergunta

  • Olá,

    Tenho uma lista no sharepoint 2010.

    Estou customizando o newform.aspx para redirecionar o usuário para a página /AllItems.aspx desta lista.

    Após o usuário cadastrar um item, o mesmo deve ser redirecionado para a view AllItems.aspx com o Dispform.aspx aberto.

    Observação: O dispform.aspx deve ser aberto em modal na frente da view AllItems.aspx.

    Alguém sabe como que faço esta proeza?

    Abs


    k2rto4-Pb - Analista SharePoint




    • Editado TI DEV sexta-feira, 27 de junho de 2014 14:27
    terça-feira, 11 de fevereiro de 2014 16:23

Respostas

  • Olá,

    Consegui fazer esta proeza.

    Para isto é preciso adicionar scripts no form NewForm.aspx e também na visão que deverá exibir o Modal.

    Seguem scripts:

    NewForm.aspx

    <script src="../jquery-1.3.2.min.js" type="text/javascript"></script>
    <script src="../jquery.SPServices-0.5.8.js" type="text/javascript"></script>
    <script type="text/javascript">
    
    _spBodyOnLoadFunctionNames.push("PreSaveAction");   
    
    function PreSaveAction()
    {
    	var newId = 0;
    	var query = "<Query><Where><Neq><FieldRef Name='ID' /><Value Type='Counter'>0</Value></Neq></Where><OrderBy><FieldRef Name='ID' Ascending='False' /></OrderBy></Query>";
    
    	$().SPServices(
    	{
    		operation: "GetListItems",
    		listName: "NomeMinhaLista",
    		async: false,
    		CAMLQuery: query,
    		CAMLRowLimit: 1,
    		completefunc: function (xData, status) 
    		{
                $(xData.responseXML).find("[nodeName='z:row']").each(function () {
    				newId = $(this).attr("ows_ID");
        	      });
    
    		}
    	});
    	
    	var URL = location.pathname.replace('NewForm.aspx','DispForm.aspx');
    	
    	newID = parseFloat(newId) + 1;
    
    	URL = URL + "?ID=" + newID;
    	URL = "http://MeuSite/sites/MeuSubSite/Lists/NomeMinhaLista/AllItems.aspx?oUrl=" + URL;
    	
    	window.location.href = location.pathname+"?Source="+ URL + "#/";
    	
    	return true;
    }
    
    </script>

    Visão AllItems.aspx

    <script type="text/javascript">
    
    var oUrl = getParameterByName('oUrl');
    
    function getParameterByName(name) 
    {
        name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
        var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
            results = regex.exec(location.search);
        return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
    }
    
    if(getParameterByName('oUrl') != "")
    {
    	OpenDialog(oUrl);
    }
    
    function OpenDialog(oUrl) 
    { 
        ExecuteOrDelayUntilScriptLoaded(internalOpenDialog, "SP.JS");
    
        function internalOpenDialog()
        {
    	    var options = SP.UI.$create_DialogOptions(); 
    	    options.url = oUrl;
    	    options.dialogReturnValueCallback = Function.createDelegate(null, DialogCallback); 
    	    SP.UI.ModalDialog.showModalDialog(options); 
        }
    }
    
    function DialogCallback(dialogResult, returnValue){               }
    
    </script>
    

    Após o cadastro do item, o usuário é direcionado para a visão AllItems.

    Na url é enviado a ur do DispForm.aspx de exibição do item cadastrado já com o ID deste item.

    Na visão temos um script que lê as variáveis da url.

    Após isto ele pega o valor da url e abre o Modal desta url.

    Simples assim. Esta foi a melhor forma que encontrei para fazê-lo.

    Isto foi necessário por que usamos a exibição de forms em Modal ativa para a Lista.

    Valeu!!!!



    k2rto4-Pb - Analista SharePoint


    • Marcado como Resposta TI DEV quinta-feira, 13 de fevereiro de 2014 15:26
    • Editado TI DEV quinta-feira, 13 de fevereiro de 2014 15:26
    quinta-feira, 13 de fevereiro de 2014 15:20