19 Şubat 2009 Perşembe

MOSS 2007'nin temel taşı: CAML Query

MOSS 2007 verilerini listeler aracılıgıyla tutar. En basitinden herhangi bir sayfa bile Pages listesinin itemlarındandır. MOSS 2007 ile gelen listeler WSS 'de varolan listeler ve kullanıcının kendi olusturdugu listeler olmak üzere dataların saklandıgı bir çok liste tipi mevcuttur. Peki bu listelerden verileri alıp kod tarafında bir takım işlemler uygulayıp göstermek için bu listelere nasıl sorgu atabiliriz?
Bunun için 2 tane yolumuz var. Bunlar web servisi yardımıyla atılacak sorgular ve daha yaygın olanı obje modelini kullanarak atılacak sorgulardır. Bu sorgularda kullanılan dil olan CAML (Collaborative Application Markup Language), Sharepoint ürünlerinde kullanılan xml tabanlı bir dildir. CAML sorguları olusturmak çoğu zaman zahmetli olacağı için u2u firması, CAML Query Builder isimli, yaygın olarak kullanılan bir ürün çıkarmıştır. linkinden bu ürüne ulasabilirsiniz.

Bu blogumda basit bir CAML Liste sorgusu örneği vererek sizlere bir start vermek istiyorum. Bu örnek için bir Console Application olusturuyoruz. Bu uygulamamızda Rating kontrolüyle puanlanan Sayfaların Url'lerinin ve verilen Puanların tutuldugu Puanlar isimli listemizden 3 puan verilen itemları getirmeye çalısacağız.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint;

namespace ConsoleTest
{
class Program
{
static void Main(string[] args)
{
using(SPSite site=new SPSite("http://eelkabes:600"))
{
using(SPWeb currentWeb=site.OpenWeb())
{
//Puanlar listemizi SPList tipindeki lstPuanlar değişkenimize atıyoruz
SPList lstPuanlar = currentWeb.Lists["Puanlar"];
// Listeyi sorgulamak için kullancağımı SPQuery sınıfından bir instance yaratıyoruz
SPQuery query = new SPQuery();
//Puanlar Listesinden Puan Field değeri 3 olan itemları getirecek sorgumuzu olusturuyoruz
query.Query = @" <Where>
<Eq>
<FieldRef Name='Puan' />
<Value Type='Number'>3</Value>
</Eq>
</Where>";
//SPList sınıfının GetItems metoduna SPQuery objemizi parametre olarak vererek listemizi sorguluyoruz
SPListItemCollection items=lstPuanlar.GetItems(query);

//Sonuç kümemiz içerisinde dolaşarak Puanlanan Item'in URL alanının değerini Console'da gösteriyoruz
foreach (SPListItem item in items)
{
Console.WriteLine(item["URL"]);
}
Console.ReadLine();
}
}
}
}
}


Kodumuz bu kadar. CAML'a böylece giriş yapmış olduk. Bir sonraki blogumda Sharepoint Web Servisleri yardımıyla sorgular olusturup kayıtları sorgulayacağız ve update edebiliyor olacağız. Bir sonraki blogumda görüşmek üzere...

Hiç yorum yok:

Yorum Gönder