sharePointサイトの特定のリストに対してすべての表示可能な列(非表示== false)を取得したいと考えていますが、SharePointWebService.Lists.GetList(listName)
を調べようとしましたが、 List WebServiceで提供されているメソッドもチェックし、新しいものもチェックしていません。SharePointリストを表示するC#を使用してWebサービスから名前を取得
アドバイスをしてください。
sharePointサイトの特定のリストに対してすべての表示可能な列(非表示== false)を取得したいと考えていますが、SharePointWebService.Lists.GetList(listName)
を調べようとしましたが、 List WebServiceで提供されているメソッドもチェックし、新しいものもチェックしていません。SharePointリストを表示するC#を使用してWebサービスから名前を取得
アドバイスをしてください。
あなたは、リストビューのスキーマを取得するリストWebサービスのGetListAndView方法を使用することができます。
viewName
パラメータを空のままにしておくと、ドキュメントから、デフォルトのビューが返されます。次に、ノードをフィールドのリストとして読み取ることができます。あなたが持っている必要がありますように
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);
}
はルックス:
*編集*
が返されたXMLを照会するXPathを使用してターンは、私が思ったより...ここに私が思い付いたものですタフでしたXmlNamespaceManager
それ以外の場合、クエリは常に値を返しません。名前空間の指定に関する何か... a good referenceです。
GetList()メソッドは、リストのフィールド(列)定義を含むCAML
フラグメントを返します。あなたはXPath expressionをしようとする場合があります:
XmlNode list = yourListService.GetList("yourListName");
XmlNodeList visibleColumns
= list.SelectNodes("Fields/Field[not(@Hidden) or @Hidden='FALSE']");
:
代わりにコンテンツIDを取得するためにGetListContentTypesAsync()
を使用して、特定のContentType
がGetListContentTypeAsync()
を使用して取得し、それは、SharePointリスト内のすべての表示可能な列が含まれてXMLを返します。 Hidden = "TRUE"という属性がないことに気付きました:S私は質問を言い換えます。リストにあるユーザーに表示されるすべての列を、sharePointサイトを通じてリストを開くには、どうすれば読むことができますか? –
@Rami Shareef:あなたはリストのデフォルトビューを意味しますか? –
@Kit:正確には、sharePointサイトのデフォルトビュー。 –
私は上記のコードを使用しましたが、長い検索の後に、sharepointリストからすべてまたはカスタムの列を取得するソリューションが見つかりました。そのためのコードは、ソリューションは非常に簡単です。..
孤独なリンクはそれ自体無意味であり、将来的にはターゲットリソースが生きているとは保証されていないので、[貧弱な答えとみなされます](http://stackoverflow.com/faq#deletion)です。 [こちらがこちらの回答の必須部分を含めることが望ましい](http://meta.stackexchange.com/q/8259)、参照のためのリンクを提供する。 – j0k
に共有されています。 GetList()
または同様の機能を使用するのは間違った方法です。私は「リスト」InnerXmlプロパティと私を見てきた
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());
は面白そうだ、私はできるだけ早くそれを試してみるだろうと結果を投稿する –
ViewFieldsフィールドの名前を返すので、名前を表示するためにフィールドごとに名前を再設定しなければならなかった。 そして2番目の問題はViewFieldsそのリストの共有ポイントのデフォルトビューに表示されているすべてのフィールドは表示されません(リストがピクチャリストの場合)。何か案は? –
私はFields、System.Xml.XmlNode list = SPListWebService.GetListAndView(xmlnode.Attributes ["Title"]。Value、string.Empty)を取得しようとしました。 System.Xml.XmlNodeList visibleColumns = list.SelectNodes( "View/ViewFields/FieldRef"); ...どこが間違っていましたか? –