2010-12-13 6 views
0

C#プログラムからSharePointリストとサブサイトを反復処理するにはどうすればよいですか? SharePoint.dllはこれに必要なSharePointインストールからのものか、またはそのデータにリモートからアクセスするための "Sharepointクライアント" dllがありますか?SharePointリストとサブサイトにプログラムでアクセスしますか?

+0

このSharePoint 2007または2010ですか? –

答えて

1

SharePoint 2007のためには、Webサービスにアクセスする必要があります。 Sharepoint 2010には、Sharepointクライアントオブジェクトモデルがあります。

http://msdn.microsoft.com/en-us/library/ee857094%28office.14%29.aspx

+1

または、コードがSharePointサーバー上で実行されている場合は、APIを使用します。 –

0

私は、この作品...今、この非常に事に対処することが起こります。私はちょうどメカニックに焦点を当てるためにコードをちょっと変えました。エッジの周りは荒いですが、うまくいけばアイデアを得ることができます。それは私のために働いています。

また、SharepointサイトのURLを使用してWeb参照を設定してください。下の "ウェブ参照"としてそれを使用してください。

private <web reference> _Service; 
    private String _ListGuid, _ViewGuid; 

    private Initialize() 
    { 
     _Service = new <web reference>.Lists(); 
     _Service.Credentials = System.Net.CredentialCache.DefaultCredentials; 
     _Service.Url = "https://sharepointsite/_vti_bin/lists.asmx"; 
    } 

    private String SpFieldName(String FieldName, Boolean Prefix) 
    { 
     return String.Format("{0}{1}", Prefix ? "ows_" : null, 
      FieldName.Replace(" ", "_x0020_")); 
    } 

    private String GetFieldValue(XmlAttributeCollection AttributesList, 
     String AttributeName) 
    { 
     AttributeName = SpFieldName(AttributeName, true); 
     return AttributesList[AttributeName] == null ? 
      null : return AttributesList[AttributeName].Value; 
    } 

    public void GetList() 
    { 
     string rowLimit = "2000"; // or whatever 

     System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument(); 
     System.Xml.XmlElement query = xmlDoc.CreateElement("Query"); 
     System.Xml.XmlElement viewFields = xmlDoc.CreateElement("ViewFields"); 
     System.Xml.XmlElement queryOptions = 
      xmlDoc.CreateElement("QueryOptions"); 

     queryOptions.InnerXml = ""; 
     System.Xml.XmlNode nodes = _Service.GetListItems(_ListGuid, _ViewGuid, 
      query, viewFields, rowLimit, null, null); 

     foreach (System.Xml.XmlNode node in nodes) 
     { 
      if (node.Name.Equals("rs:data")) 
      { 
       for (int i = 0; i < node.ChildNodes.Count; i++) 
       { 
        if (node.ChildNodes[i].Name.Equals("z:row")) 
        { 
         XmlAttributeCollection att = 
          node.ChildNodes[i].Attributes; 
         String title = GetFieldValue("Title"); 
         String partNumber = GetFieldValue("Part Number"); 
        } 
       } 
      } 
     } 
    } 
} 

また、SpFieldName方法は、鉄クラッドありません。リスト内のほとんどのフィールド名については、それは良い推測です。残念ながら、これは発見の旅です。実際のフィールド名が一致しない場合は、XMLを公開して実際のフィールド名を検索する必要があります。

グッドハンティング。

関連する問題