14 Eylül 2010 Salı

Sharepoint 2010 Feature Activation in Visual Studio 2010

Bundan önceki yazılarımda ve 2010 yeniliklerinde en dikkat çeken husus visual studio 2010 ile sharepoint 2010'un birlikte çok güzel işler çıkartması olmuştur.
Bu yazımda Sharepoint 2010 projemizi deploy ederken featurların aktivasyonları ile ilgili visual studio içerisinde neler yapabileceğimiz olacaktır.

Yeni bir sharepoint projesi veya visual webpart oluşturduğumuzda projemize "Features" klasörü eklenmektedir.
Feature içerisinde nelerin olacağını proje yapınıza göre oluşturabilirsiniz.
Geliştirme ve deployment kolaylığı açısından Lists, ContentTypes, WebParts veya Modül bazlı olarak her birine yeni bir feature oluşturmak sizlere yönetim açısından rahatlık sağlayabilir.

Feature1 üzerindeyken F4 derseniz yalnızca Featureın adının yer aldığı properties ekranı gözükmektedir.
Ancak Feature1 e tıkladığımız da gelen ekran üzerinden F4 dediğinizde properties pencerisini açtığımızda Feature ile ilgili özellikleri görebilmekteyiz.
Bu ekranda "Activation on Default" seçeneği Web veya Site Scope bazında bir işlem yapmamakta yalnızca FarmScope seçili olduğunda ve yeni bir web oluşturulduğunda devreye girmektedir.

Bunun dışında feature aktifleştirme ile ilgili yapabileceğimiz diğer değişikliği projemizin özellikler ekranından görebilmekteyiz.
Burada default olarak gelen ekranda
Yükleme adımlarında "Activate Features" da seçili olduğundan featurelar aktif olarak yüklenecek.
Ancak
Default olarak gelen seçenekler içerisinden "No Activation" seçip yüklediğimizde Featurelar aktifleştirilmeyecektir.
İsterseniz proje özelliklerinin bulunduğu ekranda default gelenlerin dışında siz kendi yükleme adımlarınızı oluşturabilirsiniz.
Bu noktada proje yapısına göre hangi feature elle aktifleştirilmeli, hangisi deployment ile otomatik aktifleştirilmeli veya aktifleştirilmemeli önemli bir noktadır.
Bir bakmışsınız aktifleştirme yaparken proje ile daha önce yüklenen Sharepoint Listenizin uçtuğuna şahit olabilirsiniz!

1 Eylül 2010 Çarşamba

Lisans Tiplerine Göre Sharepoint 2010 WebPartlar

Faydalı bir paylaşımla daha tekrar buradayım :)
İlgili linkte her ne kadar custom geliştirme yapmaz Microsoftdaki abiler ne güzel geliştirmiş hatta testini de yapmış deselerde biz gene custom geliştirmeler ile projeler yapmaya devam ediyor ve edeceğiz!
Buradan lisans tiplerine göre farklılıkları ve hangi webpartın hangi lisans ile geldiğini görebilirsiniz.

SharePoint 2010 site templates

Sharepoint 2010 site templati oluşturma ve xsl güncellemeleri ile ilgili Yaroslav Pentsarskyy'in videosu ve videoda geçen kendi blog şablonumuzu oluşturduğumuz
örnek projeyi aşağıda bulabilirsiniz.
Yaroslav'un Vimeo'daki diğer videoları da izlemenizi tavsiye ederim.



örnek projeyi buradan indirebilirsiniz.

19 Ağustos 2010 Perşembe

div tagına onclick eventini ekleme

Html div tagına tıklanılabilir ve tıkladığında veri işlemesi yapması gereken bir tasarım sizin elinize ilk ulaştığında göreceğiniz ilk şey divin onclick eventinde çalışamayacağınızdır.
Fakat aşağıdaki yazılanları uyguladıktan sonra ise olabildiğini göreceksiniz :)
<div class="myclass" id="divSubmit" runat="server"> click me! div>
Sayfanın Load'ında divin onclick eventin referans atamasını yapıyoruz.
divSubmit.Attributes["onclick"] = Page.ClientScript.GetPostBackEventReference(this, "divSubmit_Click");
İlgili sayfamıza veya usercontrolümüze IPostBackEventHandler interfacenin RaisePostBackEvent methodunu implement ediyoruz.
public partial class MyUserControl : System.Web.UI.UserControl, IPostBackEventHandler
implement ettikten sonra ilgili methodun içerisine tıklanma anında yapılacak işlemi yazıyoruz.
#region IPostBackEventHandler Members
 
public void RaisePostBackEvent(string eventArgument)
{
    if (!string.IsNullOrEmpty(eventArgument))
    {
        if (eventArgument == "divSubmit_Click")
        {
            divSubmit_Click();
        }
    }
}
 
#endregion
protected void divSubmit_Click()
{
    // yapılacak işlemler
}
daha sonrasında yaptığımız işlemlerin düzgün şekilde çalıştığını görüp keyfimize bakıyoruz :)

8 Temmuz 2010 Perşembe

Linq To Sharepoint ile alt sitede bulunan veriye üst siteden ulaşabilmek

Yukarıdaki çizimde de görüleceği üzere http://sps2010 sitemde bulunan webpartdan http://sps2010/sites/mavi sitemde bulunan listeye bağlanıp Müşterileri çekmek istemekteyim ancak Mavi adlı siteme bağlanamamakte ve "Web at http://sps2010/sites/mavi/ could not be found." hatası vermektedir.Bağlantıyı sağlayamayan örnek kod aşağıdaki gibidir:

using (EntitiesSps2010Mavi.EntitiesSps2010MaviDataContext dataContext = new EntitiesSps2010Mavi.EntitiesSps2010MaviDataContext("http://sps2010/sites/mavi/"))
{
var musteriler = from musteriListesi in dataContext.Musteriler
orderby musteriListesi.Title
select musteriListesi;
if (musteriler != null)
{
lvMusteriler.DataSource = musteriler.ToList();
lvMusteriler.DataBind();
}
}
Ancak HttpContext'i bağlanmak istediğimiz siteye set ettikten sonra herhangi bir sorun yaşamamakta ve Müşterileri listeleyebilmekteyim.Bağlantıyı sağlayan örnek kod aşağıdaki gibidir:
HttpContext currentContext = HttpContext.Current;

SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = new SPSite("http://sps2010/sites/mavi/"))
{
using (SPWeb web = site.OpenWeb())
{
HttpRequest httpRequest = new HttpRequest("", web.Url, "");
HttpContext.Current = new HttpContext(httpRequest, new HttpResponse(new StringWriter()));
SPControl.SetContextWeb(HttpContext.Current, web);
using (EntitiesSps2010Mavi.EntitiesSps2010MaviDataContext dataContext = new EntitiesSps2010Mavi.EntitiesSps2010MaviDataContext("http://sps2010/sites/mavi/"))
{
var musteriler = from musteriListesi in dataContext.Musteriler
orderby musteriListesi.Title
select musteriListesi;
if (musteriler != null)
{
lvMusteriler.DataSource = musteriler.ToList();
lvMusteriler.DataBind();
}
}
}
}
});
HttpContext.Current = currentContext;
Mavi adlı siteme bağlantıyı gerçekleştirip Context'i değiştirdikten sonra bir sorunla karşılaşmadım.
Dikkat edilmesi gereken nokta kodun en üst ve en alt satırında da görüldüğü üzere CurrentContext'i bağlantı yapılmadan önce tutmak ve işimiz bittikten sonra tekrar atamak.

SPMetal ile Entity kodumu Mavi adlı siteden çıkarttım bunun sebebi de Müşteriler listemin orada bulunmasından dolayıdır.