1

プログラムでURLからリスト名を取得しようとし、次にリスト名をWebサービスリスト(_vti_bin / Lists.asmx)に渡して、GetListItemsを使用するか、Webサービスを使用してリスト名を渡すGetViewCollectionを使用します。 。問題は、タイトルに表示されているリスト名を取得できることですが、GetListItemsまたはGetViewCollectionのいずれかに渡すと、GUIDが正しくないと文句を言います。

例:

サンプルURL:

http://test.com/List Name Here/

Viewsサービスを使用して「ここのリスト名」を解析できますが、「ここのリスト名」をGetListItemsに渡すと、GUIDが正しくないというメッセージが表示されて失敗します。私はこれが可能かどうかを調べていると思います。可能であれば、GetListItemsメソッドに渡すことができるようにリスト名を内部的にどのような形式にする必要がありますか?

編集

問題の1つが発見されたのは、SharePointがURL内のリスト名の解析を行い、コンマ、角かっこ、ピリオド、ダッシュを削除して、私の場合のリスト名の名前にピリオドが含まれていることです。したがって、編集されていない完全なリスト名を取得する他の方法がない限り、エンドユーザーに命名規則に従うように指示する必要があるかもしれません。

4

1 に答える 1

2

リストコレクション(GetListCollection()。ChildNodes)をループすることにより、実際のリスト名を取得できました。これにより、「DefaultViewUrl」属性と「Name」属性を使用して、正しいリスト名をGetListItemsWebサービスメソッドに渡すことができました。これにより、エンドユーザーはSharePointからURLを渡すことができ、処理によってリスト名が決定されるため、構成ファイルなどで指定する必要はありません。

以下のコードは、URLからリスト名を決定するための基本を示しています。

string name = string.Empty;
foreach (XmlNode ls in list.GetListCollection().ChildNodes)
{
    //Check whether list is document library
    if (Convert.ToInt32(ls.Attributes["ServerTemplate"].Value) != 0x65)
    {
        continue;
    }

    string defaultViewUrl = Convert.ToString(ls.Attributes["DefaultViewUrl"].Value);

    if (defaultViewUrl.Contains(listName))
    {
        name = ls.Attributes["Name"].Value;
        break;
    }
}

XmlNode ndListItems = list.GetListItems(name, null, ndQuery, ndViewFields, null, ndQueryOptions, null);
XmlNodeList oNodes = ndListItems.ChildNodes;

// rest of processing below...
于 2012-08-22T21:53:06.973 に答える