2010-11-22 14 views

cevap

5

Listede bir görünüm için şemaları almak için listeler web hizmetinin GetListAndView yöntemi kullanabilirsiniz: Bir XPath expression denemek isteyebilirsiniz.

Belgelerden viewName parametresini boş bırakırsanız, varsayılan görünüm döndürülür. Ardından, alanların listesi için <ViewFields></ViewFields> düğümünü okuyabilirsiniz. Eğer bir olması gibi görünüyor

XmlNode result = webService.GetListAndView("My Pictures", string.Empty); 

XmlNamespaceManager nsmgr = new XmlNamespaceManager(result.OwnerDocument.NameTable); 
nsmgr.AddNamespace("sp", "http://schemas.microsoft.com/sharepoint/soap/"); 

string xpathQuery = "sp:View/sp:ViewFields/sp:FieldRef"; 
XmlNodeList nodes = result.SelectNodes(xpathQuery, nsmgr); 

for (int i = 0; i < nodes.Count; i++) 
{ 
    Console.WriteLine(nodes[i].Attributes["Name"].Value); 
} 

:

* Düzenleme *

döndürülen XML ben ... Burada düşünce daha zorluydu sorgulamak için XPath kullanarak ben ile geldi dışarı açar XmlNamespaceManager aksi takdirde sorgunuz her zaman değer döndürmez. İsim alanını belirtmekle ilgili bir şey var ... İşte a good reference.

+0

ilginç görünüyor, ben ASAP deneyin ve sonuçları yayınlayın –

+0

ViewFields Alanların isimlerini döndürün, bu yüzden her alanın adını ismini kullanarak yeniden isimlendirmek zorunda kaldım, görünen adını almak için ve ikinci sorun ViewFields o liste için sharepoint varsayılan görünümünde görüntülenen tüm alanları göstermez (liste bir liste ise)! herhangi bir fikir? –

+0

Bunu, Fields, System.Xml.XmlNode listesini = SPListWebService.GetListAndView (xmlnode.Attributes ["Title"]) almak için denedim. Value, string.Empty); System.Xml.XmlNodeList visibleColumns = list.SelectNodes ("View/ViewFields/FieldRef"); .... nerede hata yaptım? –

1

GetList() yöntemi, listenin alan (sütun) tanımlarını içeren bir CAML parçasını döndürür.

XmlNode list = yourListService.GetList("yourListName"); 
XmlNodeList visibleColumns 
    = list.SelectNodes("Fields/Field[not(@Hidden) or @Hidden='FALSE']"); 
+0

:

yerine İçerik kimliğini almak için GetListContentTypesAsync() kullanmak ve daha sonra belirli ContentTypeGetListContentTypeAsync() kullanarak almak, bu sharepoint listesindeki tüm görünür sütunları içeren XML döndürür Gizli = "DOĞRU" diye bir şey olmadığını fark ettim: S Sorularımı yeniden ifade edeceğim: Listede sharePoint sitesi üzerinden açıldığında listede görünen tüm sütunları nasıl okuyabilirim? –

+0

@Rami Shareef: Listenin varsayılan görünümünden mi bahsediyorsunuz? –

+0

@Kit: tam olarak, SharePoint sitesindeki varsayılan görünüm. –

1

Yukarıdaki kodu kullandım, ancak uzun bir aramadan sonra, paylaşım noktası listesinden tüm veya özel sütunları almak için bir çözüm buldum. Bunun için kod

Custom Columns or ALL Columns

+1

Yalnız bağlantı, kendi başına anlamsız olduğu ve gelecekte hedeflenen kaynakların hayatta kalmayı garanti etmediği için [yetersiz yanıt olarak kabul edilir] (http://stackoverflow.com/faq#deletion). [Http://meta.stackexchange.com/q/8259] Burada cevabın önemli kısımlarını dahil etmek ve referans için bağlantı sağlamak için tercih edilir. – j0k

0

Çözüm oldukça basit .. üzerinde paylaşılır. GetList()'u veya benzeri işlevleri kullanmak yanlış yoldur. Ben 'List' InnerXml ve ben bakarak oldum

var Contents = await soapListClient.GetListContentTypesAsync(list.Title, "0x01"); // 0x01 is kind of a root element for sharepoint. 
String ContentID = Contents.Body.GetListContentTypesResult.Descendants().FirstOrDefault().Attribute("ID").Value.ToString(); 
var ContentType = await soapListClient.GetListContentTypeAsync(list.Title, ContentID); 
XElement xmll = XElement.Parse(ContentType.Body.GetListContentTypeResult.ToString()); 
İlgili konular