Veysel Uğur KIZMAZ

Sharepoint 2010 SPQuery ve CAML

27.09.2011Okunma Sayısı: 4424Kategori: Sharepoint 2010

Sharepoint listelerinde değişik parametreler kullanarak very alma, sıralama vb işlemler için CAML sorguları kullanılabilir. CAML’I bir nevi SQL sorgusu gibi düşünebilirsiniz. Veritabanında SQL sorgusu ne ise Sharepoint’te CAML o anlama gelmektedir.

CAML’ın en büyük avantajı hızlı ve kullanımının basit olmasıdır. CAML sorguları yazılırken başta biraz zorlanılacakmış gibi görülse de third party toollarla sorgular oluşturulup doğrulanarak koda eklenebilir.

Bu işlemi yapmak için Sharepoint tarafında SPQuery isimli sınıfımızı kullanmaktayız. Bu sınıf, sorguların çalıştırılması ve sonucunun alınması işlemini gerçekleştirmektedir.

Öncelikle SPQuery’nin methodlarına bir göz atalım.

Property/Method
Açıklama
Query
CAML sorgularını tutar.
Folder
Sorgularda klasörlerin kullanımını sınırlandırır
ViewFields
Sorgu sonucunda gelecek alanları belirler
RowLimit
Sorguda dönecek satır sayısını belirler
ViewAttributes
CAML’a ek parametreler eklemeyi sağlar.
 
Şimdi bir örnek ile inceleyelim. Örneğimiz için yeni bir Empty Sharepoint Project (Farm solution) oluşturalım ve bir adet Visual Web Part ekleyelim.
 
 
Code behind’a geçelim ve şu şekilde düzenleyelim:
 
 
  1. using System;
  2. using System.Web.UI;
  3. using System.Web.UI.WebControls;
  4. using System.Web.UI.WebControls.WebParts;
  5. using Microsoft.SharePoint;
  6.  
  7. namespace SPFarmSolution.WebPart_SPQuery
  8. {
  9.     public partial class WebPart_SPQueryUserControl : UserControl
  10.     {
  11.         protected void SatirEkle(Table tablo, System.Collections.Generic.List<object> parametreler)
  12.         {
  13.             TableRow satir = new TableRow();
  14.             foreach (object parametre in parametreler)
  15.             {
  16.                 TableCell hucre = new TableCell();
  17.                 Label label = new Label();
  18.                 if (parametre != null)
  19.                     label.Text = parametre.ToString();
  20.                 hucre.Controls.Add(label);
  21.                 satir.Cells.Add(hucre);
  22.             }
  23.             tablo.Rows.Add(satir);
  24.         }
  25.         protected void Page_Load(object sender, EventArgs e)
  26.         {
  27.             Table tablo = new Table();
  28.  
  29.             SPWeb web = SPContext.Current.Web;
  30.             SPList liste = web.Lists["Duyurular"];
  31.             SatirEkle(tablo, new System.Collections.Generic.List<object> { "Duyurular<br/><hr/><br/>" });
  32.  
  33.             SPQuery sorgu = new SPQuery();
  34.             sorgu.Query = "<OrderBy>" +
  35.                 "<FieldRef Name='Title'/>" +
  36.                 "</OrderBy>" +
  37.                 "<Where>" +
  38.                 "<Contains>" +
  39.                 "<FieldRef Name='Title'/>" +
  40.                 "<Value Type='Text'>Deneme</Value>" +
  41.                 "</Contains>" +
  42.                 "</Where>";
  43.  
  44.             SPListItemCollection sorguSonuc = liste.GetItems(sorgu);
  45.             foreach (SPListItem eleman in sorguSonuc)
  46.             {
  47.                 SatirEkle(tablo, new System.Collections.Generic.List<object> { eleman.Title });
  48.             }
  49.             this.Controls.Add(tablo);
  50.         }
  51.         
  52.     }
  53. }
 
Şimdi Duyurular isminde bir Announcement oluşturalım ve içine kayıt ekleyelim.
 
 
 
Şimdi bunu denemek için yeni bir sayfa ekleyelim.
 
Description: Description: C:\Users\Administrator\Desktop\Makale\SP2010_VisualStudio2010_Giris\SP2010_VisualStudio2010_Giris_47.png
 
 
 Sayfa düzenleme ekranında Insert -> Web Part -> Custom -> WebPart_SPQuery’i sayfamıza ekleyelim.
 
 
Sayfamızı kaydedelim.
Şimdi sayfamızı çalıştıralım ve kodumuzun çalışıp çalışmadığını inceleyelim.
 
 
 
 
Veysel Uğur KIZMAZ
Bilgisayar Mühendisi
veysel@ugurkizmaz.com
www.ugurkizmaz.com