Javascript 基于SharePoint2010中当前用户登录的筛选列表数据

Javascript 基于SharePoint2010中当前用户登录的筛选列表数据,javascript,sharepoint,sharepoint-2010,Javascript,Sharepoint,Sharepoint 2010,我有两个要合并的工作代码。到目前为止,这些尝试都没有成功 第一步是识别SharePoint中的当前用户: <script type="text/javascript"> ExecuteOrDelayUntilScriptLoaded(getWebUserData, "sp.js"); var context = null; var web = null; var currentUser = null; function getWebUserData() {

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

第一步是识别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>

ExecuteOrderLayUntilScriptLoaded(getWebUserData,“sp.js”);
var-context=null;
var-web=null;
var currentUser=null;
函数getWebUserData(){
context=new SP.ClientContext.get_current();
web=context.get_web();
currentUser=web.get_currentUser();
currentUser.retrieve();
加载(web);
context.executeQueryAsync(Function.createDelegate(this,this.onSuccessMethod),Function.createDelegate(this,this.onFailureMethod));
}
函数onSuccessMethod(发送方,参数){
var userObject=web.get_currentUser();
警报('Login Name:'+userObject.get_loginName());
}
函数onFailureMethod(发送方,参数){
警报('请求失败'+args.get_message()+'\n'+args.get_stackTrace());
}
这是在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>

标题
登录
价格
getMyListData();
函数getMyListData(){
var method=“GetListItems”;
var webURL=$().SPServices.SPGetCurrentSite();
var list=“产品”;
var fieldsToRead=“”+”+”;
var query=“”;
$().SPServices
({
操作:方法,
async:false,
webURL:webURL,
listName:list,
CAMLViewFields:“”,
CAMLQuery:query,
completefunc:函数(扩展数据、状态){
$(扩展数据.responseXML).SPFilterNode(“z:row”).each(函数(){
var Title=$(this.attr(“ows_Title”);
var login=$(this.attr(“ows_login”);
var价格=$(此).attr(“ows_价格”);
$(“#myHTMLTable”).append(“”+
“”+标题+“”+
“”+登录+“”+
“+价格+”
""
);
});
}
});
};
我想合并这两个部分的原因是,我有每个人的详细信息列表,包括登录名。我想将视图限制为特定用户,在该用户中,基于javascript中的登录过滤,只能看到他们的数据

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

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

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


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

什么类型的列是
Login
?personSorry的用户名,我的意思是它是“单行文本”还是“个人或组”?个人或组如果记录是由个人用户创建的,或者您可以创建包含用户详细信息的列extra person列,您可以使用[Me]创建列表视图对其进行筛选并显示列表视图,而不是创建webpart Ref:My bad,我更新不正确。我可以选择创建视图,但我的阈值是5000个条目,不能增加it@Sreevastav-考虑到您的CamlQuery似乎没有任何限制因素或分页,即使您查询的项目数超过5k也会中断。基本上,我想说的是,你所做的与检索所有项目并尝试过滤那些可以使用简单视图很好地完成的项目没有什么不同。您能否指定以下内容:1。列表中有多少项?2.登录是索引列吗?如果列表中的项目总数超过5k,则只需添加“Login”作为索引列,视图即可工作。如果当前项目数低于5k(这可以解释代码成功检索项目的原因),并且您知道列表将超过5k,则从现在起,谨慎地将“Login”字段编入索引。一旦列表中的项目超过5k,您的代码也将停止工作。此外,您还可以在CamlQuery中使用以下where条件按当前登录的用户进行人员筛选—“+”spPageContextInfo.userId+“”var query=“”+”spPageContextInfo.userId+”@Sreevastav如果这对您有帮助,请您回复,如果这对您有帮助,请将答案标记为已接受。