根据SharePoint2010中的当前用户登录筛选列表数据

时间:2017-04-26 14:35:44

标签: javascript sharepoint sharepoint-2010

我有两个工作代码要合并。到目前为止,尝试都没有成功。

第一部分是识别SharePoint中的当前用户:

<script type="text/javascript">

ExecuteOrDelayUntilScriptLoaded(getWebUserData, "sp.js");
var context = null;
var web = null;
var currentUser = null;
    function getWebUserData() {
        context = new SP.ClientContext.get_current();
        web = context.get_web();
        currentUser = web.get_currentUser();
 currentUser.retrieve();
        context.load(web);
        context.executeQueryAsync(Function.createDelegate(this, this.onSuccessMethod), Function.createDelegate(this, this.onFailureMethod));

    }
    function onSuccessMethod(sender, args) {
        var userObject = web.get_currentUser();
                alert('Login Name:' + userObject.get_loginName());
    }

    function onFailureMethod(sender, args) {
        alert('request failed ' + args.get_message() + '\n' + args.get_stackTrace());

    }</script>

这是在Web部分显示列表数据的第二部分:

<script src="/sites/SiteName/SitePages/jquery-1.4.2.min.js" type="text/javascript"></script>
<script src="/sites/SiteName/SitePages/jquery.SPServices-0.7.2.min.js" type="text/javascript"></script>
<table border="1" align="center" width="90%" id="myHTMLTable">
    <tbody>
        <tr align="left">
            <td><b>Title</b></td>
            <td><b>Login</b></td>
            <td><b>Price</b></td>
        </tr>
    </tbody>
</table>

<script type="text/javascript">
getMyListData() ;
function getMyListData() {
    var method = "GetListItems";                 
    var webURL =  $().SPServices.SPGetCurrentSite() ;                     
    var list = "Products";                      
    var fieldsToRead = "<ViewFields>"+"<FieldRef Name='Name' />" +"</ViewFields>";
    var query = "<Query><OrderBy><FieldRef Name='Title'  Ascending='True' /></OrderBy></Query>";                       

    $().SPServices
    ({
        operation: method,
        async: false, 
        webURL: webURL,
        listName: list,
        CAMLViewFields: "<ViewFields Properties='True' />",
        CAMLQuery: query,                                                                                     
        completefunc: function (xData, Status) {
            $(xData.responseXML).SPFilterNode("z:row").each(function() {
                var Title = $(this).attr("ows_Title");
                var login = $(this).attr("ows_Login");
                var Price =  $(this).attr("ows_Price");
                $("#myHTMLTable").append("<tr align='middle'>" +
                 "<td align='left'>"+Title+"</td>" +
                 "<td align='left'>"+Login+"</td>" +
                 "<td align='left'>"+Price+"</td>"  +                                         
                 "</tr>"
                );
            });
        }
    });
};
</script>

我想合并这两个部分的原因是,我列出了每个人的详细信息,包括登录。我想将视图限制为特定用户,在该用户中,只能根据javascript中的登录过滤查看他们的数据。

我知道这可以在sharepoint选项中完成,但是我在视图中只有5000个条目,由于我的组织限制,我无法增加它们

1 个答案:

答案 0 :(得分:0)

如果“登录”是人员或组字段,并且您希望限制数据,以便当前用户只能看到他是“登录”的记录,并且您希望在Web部件中显示数据那么你实际上不需要编写任何代码。

您需要创建一个过滤器所在的视图:Login equals [Me] 然后创建一个列表视图Web部件并将其附加到该视图以显示在您的页面上。

如果任何组织禁用视图创建,我会非常惊讶,特别是如果它意味着开发人员不编写代码来实现产品提供OOTB的东西。