4

シェアポイント リストのフィールド コレクションをループして、カスタム フィールドのみを取得し、シェアポイントの組み込みフィールドを取得することはできますか。

using (SPSite site = new SPSite("http://localhost/"))
{
   using (SPWeb web = site.OpenWeb())
   {
       SPList list = web.Lists["My List"];
       foreach (SPField field in list.Fields)
       {
           //We also get sharepoint built-in column here. And we don't want that, just our
           //custom created fields.
       }
   }
}

どんな助けでも大歓迎です。

ありがとう

4

3 に答える 3

9

次の 2 つのオプションがあります。

  1. フィールドが組み込みフィールドかどうかを確認します。SPBuiltInFieldId.Contains(field.Id)
  2. SPField.SourceId (MSDN から) を確認します。

組み込みフィールドを定義する名前空間を取得するか、カスタム フィールドの場合は、それが作成されたリストまたは Web サイトを識別する GUID を取得します。

于 2011-03-17T15:01:17.690 に答える
0

これは不自然な(そして現在テストされていない)方法です:

string fieldTypeClass = field.FieldTypeDefinition.FieldTypeClass;

if (!(string.IsNullOrEmpty(fieldTypeClass) || fieldTypeClass.StartsWith("Microsoft.SharePoint"))) {
//Only custom fields here
}
于 2011-03-22T21:45:58.877 に答える
-2

それが本当にあなたが探しているものかどうか、LINQ がまだ .net デジラティによって「笑われている」かどうかはわかりませんが、LINQ to Sharepoint を使用するとうまくいくかもしれません。

于 2011-03-17T15:12:51.593 に答える