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.UserControlIPostBackEventHandler
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.

24 Haziran 2010 Perşembe

Sharepoint 2010'da Developer Dashboard

Sharepoint 2010 yeniliklerinden olan Developer Dashboard ile webpartlarımızın ve sayfanın ne kadar sürede yüklendiğini ve çalışan queryleri görebilmekteyiz.
Öncelikle Developer Dashboardu aktif hale getirmemiz gerekiyor.
Kod, Powershell veya stsadm ile aktif veya pasif duruma getirebilirsiniz.
Stsadm -o setproperty -pn developer-dashboard -pv ondemand
Stsadm -o setproperty -pn developer-dashboard -pv on
Stsadm -o setproperty -pn developer-dashboard -pv off

using (SPMonitoredScope ms = new SPMonitoredScope("Name"))
{
// your code
}

using içerisine yazacağınız kodun ne kadar sürede çalıştığını öğrenebilir ve webpartın bulunduğu sayfadan takip edebilirsiniz.
Aşağıda bununla ilgili örnek bulunmaktadır.

using (new SPMonitoredScope("My code block - DeveloperDashboard"))
{
using (new SPMonitoredScope("My first block - DeveloperDashboard"))
{
Thread.Sleep(10);
}
using (new SPMonitoredScope("My second block - DeveloperDashboard"))
{
Thread.Sleep(20);
}
using (new SPMonitoredScope("My third block - DeveloperDashboard"))
{
Thread.Sleep(30);
}
}
Developer Dashboardu aktif ettikten sonra aşağıdaki resimde de göründüğü üzere sayfanın sağ üst kısmında login olan kullanıcın adının bulunduğu yere bir buton yerleşmekte ve ona tıkladıktan sonra ilgili sayfanın altında tüm bilgiler gelmektedir ve kodumuzun ne kadar sürede çalıştığını sol menüde kırmızı ile işaretli alanda verdiğimiz isme göre listelendiğini ve iç içe olan kod bloğumuzun da iç içe listelenmekte olduğunu görebilirsiniz.Sayfamızda çalışan queryin ekran görüntüsü