絶対URLからSPListItemを取得する

投稿者: | 2009年9月23日

絶対URLからSPListItemを取得する方法です。
SPListItemの取得方法は、対象がファイルまたはフォルダか、リストアイテムかで若干異なります。

ファイル、フォルダの取得
ファイルまたはフォルダのSPListItemを取得する場合、SPListと同様、ホスト名からの相対URLで取得します。
以下のコードでは、Documentsドキュメントライブラリの直下のtestフォルダ内のmemo.txtのSPListItemを取得します。





次は、Documentsドキュメントライブラリの直下のtestフォルダのSPListItemを取得するコードです。





このように、ファイルとフォルダはSPWeb.GetListItemメソッドで取得できます。
なお、SPWeb.GetListItemメソッドに、存在しないファイル、フォルダのURLを渡したり、ビューやドキュメントライブラリなどに所属しないページ(チームサイトのdefault.aspxなど)のURLを渡すと、SPListItemは取得できず、nullが返ります。

リストアイテムの取得

リストアイテムのSPListItemを取得するには、まずSPListを取得する必要があります。
その後、URLのクエリ文字列にある「ID」からItemIDを取得して、SPList.GetItemByIdメソッドを呼び出します。










SPList.GetItemByIdメソッドに、存在しないアイテムのIDを渡すと、ArgumentExceptionが発生します。

最後に番外編として、リストアイテムをSPWeb.GetListItemメソッドで取得する方法を紹介します。
SPWeb.GetListItemメソッドはURLからファイル、フォルダのSPListItemを取得することができますが、リストアイテムのSPListItemを取得することはできません。
ただし、URLを以下のようにすると取得することができます。
例えば、「http://test.co.jp/test/Lists/List1/DispForm.aspx?ID=1」というURLを以下のように変更すると、SPWeb.GetListItemメソッドで取得できるようになります。
「http://test.co.jp/test/Lists/List1/1_.000」

絶対URLから上記形式への変換が手間でなければ、このやり方で取得してもよいでしょう。