15 November 2013
SharePoint 2010 kullananların en çok gördüğü pencerelerden biridir sanırım aşağıdaki pencere (en azından benim için öyle). Evet, doğru tahmin ettiniz. Bu pencereyle alakalı bir sorun yaşayıp yeni bir şey öğrendiğim için, bunu sizlerle de paylaşıyorum 😉
Varsayalım ki listemize yeni bir kayıt giriyoruz, ekranımızda yukarıda gördüğünüz pencere varken tarayıcımızın adres çubuğunda şu URL görünüyor:
http://sharepointURL/Lists/Test/NewForm.aspx?Source=/Pages/Kaydedildi.aspx
Biliyoruz ki kaydımızı girmek için Kaydet (Save) butonuna bassak da, vazgeçip İptal (Cancel) butonuna bassak da, URL’de Source parametresiyle belirtilen “/Pages/Kaydedildi.aspx” sayfasına yönlendirileceğiz. Peki, Kaydet butonuna basınca bu sayfaya gidip İptal butonuna basınca başka bir sayfaya gitmek istiyorsak ne yapacağız? Bu soruya verdiğim ilk cevap bir JavaScript kodu yazıp İptal butonuna tıklandığında istediğimiz sayfaya yönlendirmek şeklinde oldu. Hatta şu şekilde hemen bu isteği gerçekleştirebildim:
$(document).ready(function() {
if(window.location.href.indexOf("AnketURL") !=-1){
var allElements = document.getElementsByTagName('*');
for (var i = 0; i < allElements.length; i++) {
if(String(allElements[i].getAttribute('id')).indexOf("diidIOGoBack") !=-1){
allElements[i].attachEvent('onclick',redirect,false);
}
}
}
function redirect(){
window.location.href = "/Pages/IptalEdildi.aspx";
}
});
Bu tabi ki bir çözümdü. Ancak JavaScript kodlarının client bazında farklı davranabiliyor olması yüzünden, liste üzerindeki ekleme, düzenleme vb. işlemlerde JavaScript ile değil, XSL ile değişiklikler yapmanın doğru ve uygun bir yöntem olduğunu öğrendim. Hal böyle olunca yapılması gereken, listemizin NewForm.aspx dosyasında düzenleme yapmak oldu. Bunun için aşağıdaki adımları takip edebilirsiniz:
Bu aşamada List Form Web Part‘ı sayfamızdan silip yerine Data Form Web Part eklemiş oluyoruz. Artık butonlarla uğraşabiliriz.
Tasarım moduna geçip yeni eklenen web partı incelersek, List Form Web Part‘ın aksine sayfa içerisindeki elemanlara ulaşıp bunları düzenleyebildiğimizi göreceğiz. Konumuz olan İptal (Cancel) butonlarına geri dönelim. Kodumuzda aşağıdaki iki satırı bulalım:
<SharePoint:GoBackButton runat="server" ControlMode="New" id="gobackbutton1"/>
<SharePoint:GoBackButton runat="server" ControlMode="New" id="gobackbutton2"/>
Bu iki satırı aşağıdaki kod ile değiştirelim:
<input type="button" class="ms-ButtonHeightWidth" value="İptal" name="btnCancel" onclick="javascript: {ddwrt:GenFireServerEvent('__redirect={/Pages/IptalEdildi.aspx}')}" />
Bu değişikliği yaptıktan sonra dosyamızı kaydedersek göreceğiz ki Kaydet (Save) butonu bizi URL’deki Source ile belirtilen “/Pages/Kaydedildi.aspx” adresine yönlendirirken, İptal (Cancel) butonu GenFireServerEvent içerisinde belirttiğimiz “/Pages/IptalEdildi.aspx” sayfasına yönlendirecek.