2011-07-27 8 views
5

मैं क्रॉसलिस्टक्वायर कैश का उपयोग कर दस्तावेज़ लाइब्रेरी के फ़ोल्डरों (उपफोल्डर के बिना, रिकर्सिव नहीं) का चयन करना चाहता हूं।सीएएमएल क्वेरी केवल शीर्ष स्तर फ़ोल्डरों का चयन करने के लिए

सब कुछ ठीक काम कर रहा है सिवाय इसके कि मुझे सूची में सभी फ़ोल्डर्स और उपफोल्डर्स प्राप्त हो रहे हैं न कि केवल फ़ोल्डरों का पहला स्तर। क्या मैं नीचे दिए गए कोड में बदलने की जरूरत है ताकि केवल फ़ोल्डरों के पहले स्तर उनके सबफ़ोल्डर और उप सबफ़ोल्डर आदि के बिना दिया जाता है कर ...

string query = string.Empty; 
string websQuery = string.Format("<Webs Scope=\"{0}\"/>", "None"); 
string lists = "<Lists ServerTemplate=\"101\"" + " ><List ID=\"" + listid + "\" /></Lists>"; 
bool useList = true; 
string relativeUrl = this.GetRelativeUrl(); 
query = string.Format("<Where><Eq><FieldRef Name='FSObjType' /><Value Type='LookUp'>1</Value></Eq></Where>", relativeUrl); 

CrossListQueryInfo info = new CrossListQueryInfo(); 
info.Lists = lists; 
info.Webs = websQuery; 
info.Query = query; 
info.ViewFields = "<FieldRef Name=\"FileLeafRef\"/>"; 
info.WebUrl = web.ServerRelativeUrl; 
CrossListQueryCache cache = new CrossListQueryCache(info); 
SiteDataResults sd = cache.GetSiteDataResults(site, true); 

उत्तर

1

"स्कोप" के साथ उपयोग SPQuery.ViewAttributes से अलग " पुनरावर्ती ":
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spquery.viewattributes.aspx

आप केवल फ़ोल्डर या नहीं फ़ोल्डरों प्रदर्शित करने के लिए तो आप जानकारी ContentType के बारे में, यहाँ की तरह (ड्राक्स का जवाब) जोड़ सकते हैं चाहते हैं:
CAML queries: how to filter folders from result set?

संबंधित मुद्दे