2012-11-17 15 views
7

Używam kwerendy wielbłąda w studio graficznym C#, aby uzyskać elementy z listy z sharepoint 2010. Elementy listy ma dwa pola, które chcę użyć w kwerendzie caml. Jednym z nich jest "Sekcja", a drugim "Zamówienie". Zapytanie musi zamówić elementy w określony sposób. Najpierw należy posortować go według sekcji (rosnąco = true), a następnie dla każdego sortowania wtórnego według kolejności (rosnąco = true).Jak wykonać podwójne zamówienie w zapytaniu CAML?

Na przykład wynik byłby tak:

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

Do tej pory mam to:

 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); 

Ale jak mogę zastosować wtórny orderby?

Uwaga: Sekcja jest polem łańcuchowym, a kolejność to pole liczbowe.

+1

może to pomoże: http://www.u2u.be/Tools/wincamlquerybuilder/CamlQueryBuilder.aspx – Yahia

Odpowiedz

13

Na tej stronie na MSDN, można obejmować więcej niż jeden FieldRef wewnątrz elementu OrderBy:

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

Podany przykład jest:

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

w moim przypadku na początku wydaje się, że powyższa odpowiedź nie działa. ale prawdziwym problemem było to, bo później przekonwertować je do DataTable i użyć poniższy skrypt do ich sortowania i rodzaj CategoryPosition nie int i był domyślnym z typów łańcuchowych, które miejsce 10 po 1.

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

tak obejrzyj tego rodzaju rzeczy, a sortowanie w trybie wielopoziomowym przy wielokrotnym sortowaniu działa dobrze, tak jak w przypadku Steve'a Manniny: odpowiedź:

Powiązane problemy