zoukankan      html  css  js  c++  java
  • [备查]使用 SPQuery 查询 "Person or Group" 字段

    Querying the “Person or Group” field using SPQuery (Update)

    One of the weak points of Sharepoint 2007 is documentation. If you want to query a “Person or Group” field, the documentation on MSDN is a bit sparse.
    Here is how to query a person:

    <where>
      <eq>
        <fieldref name="PersonFieldName"/>
        <value type="User">User Display Name</value>
      </eq>
    </where>
     

    Replace PersonFieldName with the internal Name of the Field.
    The two important things here: Value Type is “User”, and the String to search for is the Display Name. So if you have a user called “John Doe” whose login is “mydomainjdoe”, you have to search for “John Doe”, not for “mydomainjdoe”.
    There is an obvious drawback to this: What if you have two users called John Doe?

    Sharepoint People or Group SettingsI was quite disappointed that the Person field does not store the LoginName by default and can therefore not be queried for it.
    There are two workarounds. The first one: Go to the properties of the field in the list, and at the bottom you can change “Show Field” to “Account”.
    This has the advantage that you can use the “domainusername” Syntax now. The drawback: The field looks bad in the list as it does now show the Login, not the Display Name with the neat presence status.

    The second workaround: Use the undocumented LookupId property and search for the numeric ID:

    <where>
      <eq>
        <fieldref name="PersonFieldName" LookupId="TRUE"/>
        <value type="int">UserID</value>
      </eq>
    </where>

    The UserID is not the “domainusername”, but the numeric internal ID (SPUser.ID). As I use this in a workflow, I can easily access this through workflowProperties.OriginatorUser.ID, which is good enough for me.

    Update: The second code example was incorrect, I fixed it now.

  • 相关阅读:
    BOZJ 3551&BZOJ 3545 kruskal重构树
    [Poi2014]FarmCraft
    NOIP 2015 斗地主
    POJ 1704 Georgia and Bob
    BZOJ 1409 快速幂+欧拉定理
    最长公共子序列(LCS)
    神奇的口袋(百练2755)
    最长上升子序列(LIS)
    《Single Image Haze Removal Using Dark Channel Prior》去雾代码实现分析
    MATLAB中的nargin与varargin
  • 原文地址:https://www.cnblogs.com/dosboy/p/5277773.html
Copyright © 2011-2022 走看看