Skip to main content

Blog

Ana Sayfa
Makaleler
Kitaplar
Etkinlik Takvimi
Araçlar
Biz Kimiz?
Blog
  

Sharepoint Türkiye > Blog > Kategoriler
LINQ Kullanarak Visual Web Part Geliştirmek

Aşağıda yer alan kod bloğu yardımıyla LINQ kullanarak Sharepoint'te bir listeye erişebilirsiniz. Kodu çalıştırmadan önce SPMetal Utilitysi yardımıyla Entitie collectionınızı yaratmalısınız.

protected void Page_Load(object sender, EventArgs e)
{

   StringBuilder strContent = new StringBuilder();

   try
   {
      using(EntitiesDataContext context = new EntitiesDataContext("http://sharepoint/Development"))
      {
         var q = from companie in context.Companies
                 select new
                 {
                    companie.Title
                 };

         strContent.Append("<table border=\"1\" cellpadding=\"3\" cellspacing=\"3\">");

         foreach (var companie in q)
         {
            strContent.Append("<tr><td>" + companie.Title + "</td></tr>");
         }

         strContent.Append("</table>");
      }
   }

   catch (Exception ex)
   {
      strContent.Append(ex.ToString());
   }

   mainDiv.InnerHtml = strContent.ToString();
}

Örnek uygulamayı download etmek için aşağıdaki bağlantıyı kullanabilirsiniz.

LINQVisualWebPartSample.zip (124,08 KB)

Sharepoint Object Model İle User Profile Bilgisine Erişmek
Kullanmanız gereken using değerleri
 
using Microsoft.SharePoint;
using Microsoft.Office.Server;
using Microsoft.Office.Server.UserProfiles;
 
Ve kod
 
try
{
   site = SPContext.Current.Site;
   ServerContext serverContext = ServerContext.GetContext(site);
   UserProfileManager userProfileManager = new UserProfileManager(serverContext);
   UserProfile currentUserUserProfile = userProfileManager.GetUserProfile(System.Web.HttpContext.Current.User.Identity.Name);

   string nameSurname = (string)currentUserUserProfile["preferredname"].Value;
   string email = (string)currentUserUserProfile["workemail"].Value;
   string companyName = (string)currentUserUserProfile["company"].Value;
}
finally
{
   site.RootWeb.Dispose();
   site.Dispose();
}
Sharepoint Listitem'ların "Modified", "Modified By", "Created" ve "Created By" Alanlarında Değer Değişikliği Nasıl Gerçekleştirilir
        static void Main(string[] args)
        {
            SPSite site = null;
            SPWeb web = null;

            try
            {
                site = new SPSite("http://testSite/SubWeb/Pages/");
                web = site.OpenWeb();
                PublishingWeb publishingWeb = PublishingWeb.GetPublishingWeb(web);
                SPContentTypeId contentType = new SPContentTypeId("YourContentTypeId");
                PageLayout[] layouts = publishingWeb.GetAvailablePageLayouts(contentType);
                PageLayout pageLayout = layouts[0];
                string pageName = Guid.NewGuid().ToString() + ".aspx";

                SPUser user = web.EnsureUser("DOMAIN\\USERNAME");
                string createdDate = "2009-11-05T22:35:10Z";
                string modifiedDate = "2009-11-05T22:35:10Z";

                web.AllowUnsafeUpdates = true;
                PublishingPage newPage = publishingWeb.GetPublishingPages().Add(pageName, pageLayout);

                newPage.ListItem["Author"] = user.ID;
                newPage.ListItem["Editor"] = user.ID;
                newPage.ListItem["Created"] = createdDate;
                newPage.ListItem["Modified"] = modifiedDate;
                newPage.ListItem.UpdateOverwriteVersion();

                web.AllowUnsafeUpdates = false;

                Console.WriteLine("OK");
                Console.ReadLine();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                Console.ReadLine();
            }
            finally
            {
                web.Dispose();
                site.RootWeb.Dispose();
                site.Dispose();
            }
        }
Lookup Türündeki Alanlara Değer Atanması ve Değer Okunması
Sharepoint Object Modelini kullanarak geliştirdiğiniz uygulamalarda Lookup türündeki alanlarda bulunan verileri okumak yada bu tip alanlara değer atamak problemli olabilecektir. Bu durumda aşağıdaki şekilde SPFieldLookupValue türünde bir nesne yaratarak lokupa ait değeri ilgili alana atayabilirsiniz.
 
SPFieldLookupValue category = new SPFieldLookupValue(1, "Books");
 
Atamış olduğunuz bu değeri yine aşağıdaki şekilde de okuyabilirsiniz.
 
item["Category"] = category;
Sharepoint Sitelerinde Ajax Autocomplete Extender'ın Kullanımı
        TextBox txtAuto = new TextBox();
        AutoCompleteExtender autoCompleteTxt = new AutoCompleteExtender();
        HtmlGenericControl div = new HtmlGenericControl("div");
        protected override void CreateChildControls()
        {
            try
            {
                txtAuto.Attributes.Add("id", "txtAutoCompleteBox");
                txtAuto.ID = "txtAutoCompleteBox";
                this.Controls.Add(txtAuto);
 
                autoCompleteTxt.ID = "autoComplete";
                autoCompleteTxt.ServicePath = "/services/service.asmx";
                    autoCompleteTxt.ServiceMethod = "getItemList";
                autoCompleteTxt.MinimumPrefixLength = 1;
                autoCompleteTxt.CompletionSetCount = 15;
                autoCompleteTxt.TargetControlID = "txtAutoCompleteBox";
                autoCompleteTxt.BehaviorID = "autoComplete";
                this.Controls.Add(autoCompleteTxt);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
UserProfileManager Kullanımı
Sharepoint Object Model yardımıyla SSP tarafında tutulmakta olan user profile bilgilerine erişebilirsiniz. Bu işlem için kullanacağınız projenize öncelikle;
 
    using Microsoft.SharePoint;
    using Microsoft.Office.Server;
    using Microsoft.Office.Server.UserProfiles;
 
namespacelerini ekleyin. Ardından hem varsayılan olarak bulunan hemde sizin tarafınızdan eklenmiş profil özelliklerine erişmek için aşağıdaki kod bloğunu kullanabilirsiniz.
 

            try
            {
                site = SPContext.Current.Site;
                ServerContext serverContext = ServerContext.GetContext(site);
                UserProfileManager userProfileManager = new UserProfileManager(serverContext);
                UserProfile currentUserUserProfile = userProfileManager.GetUserProfile(System.Web.HttpContext.Current.User.Identity.Name);
                user.NameSurname = (string)currentUserUserProfile["preferredname"].Value;
                user.EMail = (string)currentUserUserProfile["workemail"].Value;
                user.CompanyName = (string)currentUserUserProfile["company"].Value;
                user.FunctionalGroup = (string)currentUserUserProfile["functionalgroup"].Value;
                user.Division = (string)currentUserUserProfile["department"].Value;
                user.Unit = (string)currentUserUserProfile["unitname"].Value;
                user.Team = (string)currentUserUserProfile["team1name"].Value;
            }
            catch (Exception ex)
            {

            }
            finally
            {
                site.RootWeb.Dispose();
                site.Dispose();
            }
SilverMossChart
Rafet Cambaz tarafından geliştirilen ve Codeplex üzerinden yayınlanmakta olan Silver Moss Chart Sharepoint listelerinin barındırdığı verileri kolay bir şekilde Silverlight tabanlı bir chart olarak karşınıza getirebiliyor.
 
Arayüzü aracılığı ile liste değişimi, chart türü değişimi gibi işlemleri gerçekleştirebildiğiniz çalışma Codeplex üzerinden kaynak kodları açık olarak yayınlanıyor.
 
Timer Görevlerinin Programatik Olarak Başlatılması
Sharepoint içerisinde timer son derece önemli bir yer kaplıyor. Pek çok işlem tanımlanmış timer görevleri olarak sistem içerisindeki yerini alıyor ve zamanı geldiğinde çalıştırılıyor. Örneğin alert emaillerinin gönderilmesi, cleanup sihirbazının çalıştırılması, backup işleminin yapılması gibi...
 
Timer joblarını programatik olarak tetiklemek ve execute etmek istiyorsanız kullanabileceğiniz örnek kod bloğu aşağıdaki şekilde olabilir.
 
SPSite site = new SPSite("http://portal");
 
foreach(SPJobDefinition job in site.WebApplication.JobDefinitions)
{
    if(job.Name == "Workflow Auto Cleanup")
    {
        job.Execute(new Guid("C9CBB265-FB94-497f-8AC0-E99CDFBC4F52"));
    }
}
Object Model Kullanarak Üst Menüye (Top Navigation Bar) Yeni Link Eklemek
Sharepoint Object Model'ini kullanarak pek çok işlem yapabildiğimizi biliyoruz. Aşağıdaki kod bloğu top navigation bar olarak adlandırdığımız üst menüye yeni bir kaydın nasıl eklenebileceğini anlatıyor.
 
SPWeb objWeb = SPContext.Current.Web;
SPNavigationNodeCollection topNavigationNodes = objWeb.Navigation.TopNavigationBar;
SPNavigationNode objItem = new SPNavigationNode("Başlık", "Adres", false);
topNavigationNodes.AddAsFirst(objItem);
objWeb.Update();
Object Model Kullanarak Sharepoint Sitesine Dosya Upload Etmek
public void UploadFile(string srcUrl, string destUrl)
{
    if (!File.Exists(srcUrl))
    {
        throw new ArgumentException(String.Format("{0} does not exist",
            srcUrl), "srcUrl");
    }
    SPWeb site = new SPSite(destUrl).OpenWeb();
    FileStream fStream = File.OpenRead(srcUrl);
    byte[] contents = new byte[fStream.Length];
    fStream.Read(contents, 0, (int)fStream.Length);
    fStream.Close();
    EnsureParentFolder(site, destUrl);
    site.Files.Add(destUrl, contents);
}
1 - 10 Next
Copyright (c), 2008-2009 Sharepoint Türkiye
Site içerisinde yayınlanan tüm makale ve dokümanların yazım ve yayınlama hakkı aksi belirtilmediği sürece sadece yazarlara aittir.
 Yayınlanan yazıların izin alınmadan kopyalanması ve kullanılması 5846 sayılı Fikir ve Sanat Eserleri Yasasına göre suçtur.