2016-08-23 27 views
5

W formularzu programu SharePoint zastąpionym przez CSR (renderowanie po stronie klienta).Przekierowanie po formularzu Wyślij (CSR)

Próbowałem dodać nowy przycisk, który jest prawie taki sam jak przycisk Zapisz, z tym wyjątkiem, że przekierowuje do innej formy z podanymi parametrami.

Chodzi o to, że przekierowanie nie działa. Próbowałem przekierowania, zmieniając właściwość "action" formularza, ale nie wydaje się, że jest brane pod uwagę.

Oto nowy przycisk: <input id="custom_addLine" type="button" name="custom_addLine" value="+" class="ms-ButtonHeightWidth">

Oto funkcja wywoływana przez przycisk i sposobu addLine następujący:

$('#custom_addLine').click(function(event){ 
    event.preventDefault(); 
    addLine(getQueryStringParameter('ID')); 
}); 


function addLine(id) { 
    if(!PreSaveItem()) { 
     return false; 
    } 
    var actionUrl = "/Lists/PurchaseRequestLine/NewForm.aspx?PurchaseRequestID="+ id; 
    var encodedActionUrl = encodeURIComponent(actionUrl); 

    var newFormAction = location.pathname + '?Source=' + encodedActionUrl; 
    $('#aspnetForm').attr('action',newFormAction); 

    if(SPClientForms.ClientFormManager.SubmitClientForm('WPQ1')){ 
     return false; 
    } 
    WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions('custom_addLine', "", true, "", "", false, true)); 
} 

getQueryStringParameter jest zamówienie Funkcja do pobierania parametrów z URI (które Prace).

Najtrudniejsze jest to, że chcę zachować domyślny identyfikator URI akcji w przypadku kliknięcia oryginalnego przycisku Zapisz, dlatego parametr działania jest modyfikowany w locie.

Odpowiedz

4

Można zmienić atrybut Source bezpośrednio z oryginalnego działania:

function addLine(id) { 
    if(!PreSaveItem()) { 
     return false; 
    } 

    var oldActionUrl = $('#aspnetForm').attr('action'); 
    var oldSource = GetUrlKeyValue("Source", true, oldActionUrl); 

    var newSource = "/Lists/PurchaseRequestLine/NewForm.aspx?PurchaseRequestID="+ id; 

    var newActionUrl = oldActionUrl.replace(oldSource, encodeURIComponent(newSource)); 

    WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions('custom_addLine', "", true, "", newActionUrl, false, true)); 
} 
+0

Czy to nadal spowoduje wysłanie formularza do tej samej lokalizacji? Mam na myśli pierwotnie przekierowania SharePoint po przesłaniu przy użyciu parametru "Source" podanego w URI czy istnieje jakikolwiek sposób przekierowania w inne miejsce, niż gdzie wskazywany jest parametr Source? – Hybris95

+0

Czy pierwotny parametr źródłowy jest zapisany w akcji oryginalnej? Gdy przywrócisz oryginalną akcję, następne zgłoszenie spowoduje to samo (w zależności od wartości wejściowych). – aprovent

+0

Nie jestem pewien, aby zrozumieć problem. Czy zmiana działania formularza działa? Jeśli nie, moja odpowiedź może ci pomóc, w przeciwnym razie jest to twój atrybut Źródłowy, który nie działa? – aprovent

2

Please usuń event.preventDefault(); z Twojego kodu, jest odpowiedzialny za przekierowanie nie działa

$('#custom_addLine').click(function(event){  
addLine(getQueryStringParameter('ID')); 
}); 
Powiązane problemy