Sharepoint上にカスタムリストがあるのですが、
そのリストのカラムの一つ「user」に、ユーザのWindowsログインIDを格納しています。
で、そのリストを参照したユーザが自分のアイテムだけを見れるようにするために、
CAMLクエリ側でこのカラムを利用し、現在そのリストを見ている人のログインIDでフィルタをかけてこれを実現しようとしています。
ですが、うまくいきません。
このサイト通りに「UserID」のパラメータをクエリにセットしてやってみたのですが、どのアイテムも引っかかりませんでした。
恐らく
<ParameterBinding Name="UserID" Location="CAMLVariable;ServerVariable(LOGON_USER)" DefaultValue="CurrentUserName"/>
このServerVariable(LOGON_USER)がうまく取得できていないか、またはこのServerVariable(LOGON_USER)が返す値が純粋なWindowsログインIDのみの形式じゃないのではないかと思っています。
というのも詳しい方はご存知だと思いますが、Sharepoint上で取得するログインIDは「i:0#.w|ドメイン\ログインID」のような形式になっているので、
ここで指定したServerVariable(LOGON_USER)もその値を返しているのではないかと思っています。
実際にリストに登録されているアイテムはドメイン等がないログインIDのみになっています。
ですが、「i:0#.w|ドメイン\ログインID」の形式で実際にアイテムを作ってみてもヒットしません。
なので、他の形式でIDが取得されているか、または取得できていのかどちらかだと思われます。
ですが、実際にどういう値が取得されているのか見ることができないので、どう対応すればよいのかわからない状態です。
実際にちゃんと値が返されていると仮定して、純粋なWIndowsログインIDのみの文字列に整形したいのですが、
Sharepointデザイナー上でどのように整形すればいいのかわかりません。
専用の文字列関数等があればできますが、調べたところないように思いました。
ご存知の方は教えていただけますでしょうか?
長々と書きましたが、本来の目的は、
CAMLクエリ側で現在そのリストを見ている人のログインIDでフィルタをかけ、その人のアイテムだけを表示する、です
これができれば他の方法でもいいですが、Webパーツの現在のユーザフィルタを使うのは無しでお願いします。
なお、下記のリンクのような
http://www.ashokraja.me/tips/How-to-use-User-Name-User-Id-Logged-in-User-Id-in-SharePoint-CAML-Query
<UserID>タグを使用した方法は様々な事情で厳しいことがわかったので、他の方法でお願いします。
たぶん回答がつかないと思いますがお願いします。
あなたの回答
tips
プレビュー