2012-11-17 23 views
7

Görsel stüdyo C# içinde deve sorgusu kullanarak öğeleri Sharepoint 2010'dan bir listeden almak için. Liste öğelerinin caml sorgusunda kullanmak istediğim iki alanı var. Biri "Bölüm" ve diğeri "Sipariş By" dır. Sorgu, öğeleri belirli bir şekilde sipariş etmek zorundadır. Öncelikle Bölüm (ascending = true), sonra da Order By (ascending = true) tarafından ikincil bir sıralama için sıralamalıdır.CAML Query'de çift sıralı nasıl yapılır?

Örneğin sonuçta aşağıdaki gibi olacaktır:

 SPQuery query = new SPQuery(); 
     query.Query = "<Query><OrderBy><FieldRef Name='" + Root_List.Fields.GetField(SECTION_COLUMN).InternalName + "' Ascending='True'/></OrderBy></Query>"; 
     item_collection = Root_List.GetItems(query); 

Ama nasıl ikincil OrderBy uygularım: Şimdiye kadar bu var

<item> <Section> <Order By> 
item1 A 1 
item2 A 3 
item3 B 1 
item4 B 2 
item5 C 5 
item6 C 6 

?

Not: Bölüm bir dize alanıdır ve bir sayı alanıdır.

+1

belki de bu yardımcı olabilir: http://www.u2u.be/Tools/wincamlquerybuilder/CamlQueryBuilder.aspx – Yahia

cevap

13

, OrderBy öğesinin içinde birden fazla FieldRef şunları içerebilir:

http://msdn.microsoft.com/en-us/library/ms467378.aspx

verilen örnektir:

<OrderBy> 
    <FieldRef Name="Newcomers"/> 
    <FieldRef Name="Years" Ascending="FALSE"/> 
    <FieldRef Name="Location"/> 
</OrderBy> 
1

kullandığım CAML Builder, özellikle zor sorgularınız olduğunda hayatı kolaylaştırır, buradan alabilirsiniz:

http://www.u2u.be/res/tools/camlquerybuilder.aspx

2007 baskısı Ben yukarıdaki cevabı çalışmıyor görünüyor ilk başta benim durumumda günlük

+0

http: // sharepoint .biwug.be/SitePages/Caml_Designer.aspx –

0

kullanmak 2010 ile çalışıyor. Daha sonra DataTable'a onları dönüştürmek ve onları sıralamak için aşağıdaki komut dosyasını kullanabilirsiniz ve CategoryPosition türü int değildi ve 10 sonra 1.

  DataView dv = new DataView(maindt); 
      dv.Sort = "Category,CategoryPosition"; 
      maindt = dv.ToTable(); 

böylece süreceğini dize türleri ile varsayılan çünkü ama asıl sorun oldu Bu tür şeyler dışarı ve caml sıralama birden çok sıralama Steve Mannina gibi iyi çalışıyor