关于SPList GetItems SPQuery 取数据的问题

kx00450 2016-03-28 06:44:27
1、列表是有审核权限的。
2、项目起草时,有编辑和审批权限的 和没有权限的查询出来的数据是一样的。都看不到起草的项目

SPQuery 的值都是
<Eq>
<FieldRef Name='_ModerationStatus' />
<Value Type='ModStat'>0</Value>
</Eq>


3、当把审批过的项目重新设置成待定。


有编辑和审批权限的卡不到该项目。没有权限的任然可以看到。
...全文
218 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Justin-Liu 2016-03-29
  • 打赏
  • 举报
回复
规范点儿把View和Query节点也写全,要不在CSOM里不好用
Justin-Liu 2016-03-29
  • 打赏
  • 举报
回复
SPList list = web.Lists["List"];
                    SPQuery query = new SPQuery();
                    query.Query = "<Where><Eq><FieldRef Name='_ModerationStatus'/><Value Type='Text'>Pending</Value></Eq></Where>";                   
                    SPListItemCollection items = list.GetItems(query);
                    foreach (SPListItem item in items)
                    {
                        Console.WriteLine(item["_ModerationStatus"]);
                    }
                    Console.ReadKey();
霖雨 版主 2016-03-29
  • 打赏
  • 举报
回复
贴一下完整的代码。。这么看不出来问题。。要么就是你用的不是当前账号,要么就是caml写错了。。
Justin-Liu 2016-03-29
  • 打赏
  • 举报
回复
那只能是你的query写得不对了
kx00450 2016-03-29
  • 打赏
  • 举报
回复
是的
引用 3 楼 FoxDave 的回复:
有权限的看不到 没有权限的能看到?
用自带所有项目的视图查看。没权限的看到的是审批通过的数据。更改过的数据,如设置成待定,改标题都没更新。
Justin-Liu 2016-03-29
  • 打赏
  • 举报
回复
有权限的看不到 没有权限的能看到?
kx00450 2016-03-29
  • 打赏
  • 举报
回复
AllItems.aspx 页面

没权限


有权限的
kx00450 2016-03-29
  • 打赏
  • 举报
回复

这个是没权限的
kx00450 2016-03-29
  • 打赏
  • 举报
回复
谢谢各位了。估计是代码的问题
kx00450 2016-03-29
  • 打赏
  • 举报
回复
引用 11 楼 linyustar 的回复:
找个caml工具,试一下。。我觉是个很好的测试方式。。
用工具U2UCamlCreator 测试 没问题。就是在代码中查询就不对了
霖雨 版主 2016-03-29
  • 打赏
  • 举报
回复
找个caml工具,试一下。。我觉是个很好的测试方式。。
Justin-Liu 2016-03-29
  • 打赏
  • 举报
回复
引用 9 楼 kx00450 的回复:

 public static SPQuery GetQuery(uint rowLimit, SPList list)
        {
            SPQuery query = new SPQuery();
            query.Query = string.Empty;
            string queryIsShow = string.Empty;
            string queryModerationStatus = string.Empty;
            StringBuilder sb = new StringBuilder();

            if (list.Fields.ContainsField(ZhongsoftConfig.List_Isshow))
            {
                queryIsShow = string.Format(@"<Eq>
                                   <FieldRef Name='{0}' />
                                   <Value Type='Boolean'>1</Value>
                                </Eq>", ZhongsoftConfig.List_Isshow);
            }
            if (list.Fields.ContainsField(ZhongsoftConfig.ModerationStatus))
            {
                queryModerationStatus = string.Format(@"<Eq>
                                   <FieldRef Name='{0}' />
                                   <Value Type='ModStat'>0</Value>
                                </Eq>", ZhongsoftConfig.ModerationStatus);
            }
            if (!string.IsNullOrEmpty(queryIsShow) && !string.IsNullOrEmpty(queryModerationStatus))
            {
                sb.Append(string.Format(@" <Where>
                        <And>
                         {0}
                         {1}
                        </And> 
                   </Where>", queryIsShow, queryModerationStatus));
            }
            else if (!(string.IsNullOrEmpty(queryIsShow) && string.IsNullOrEmpty(queryModerationStatus)))
            {
                sb.Append(string.Format(@" <Where>
                         {0}
                   </Where>", queryIsShow));
            }

            sb.Append("<OrderBy>");

            if (list.Fields.ContainsField(ZhongsoftConfig.List_PictureSort))
            {
                sb.Append(string.Format("<FieldRef Name='{0}' Ascending='True' />", ZhongsoftConfig.List_PictureSort));
            }
            if (list.Fields.ContainsField(ZhongsoftConfig.ItemCreateTime))
            {
                sb.Append(string.Format("<FieldRef Name='{0}' Ascending='False' />", ZhongsoftConfig.ItemCreateTime));
            }
            if (list.Fields.ContainsField(ZhongsoftConfig.List_IsTop))
            {
                sb.Append(string.Format("<FieldRef Name='{0}' Ascending='False' />", ZhongsoftConfig.List_IsTop));
            }
            if (list.Fields.ContainsField(ZhongsoftConfig.IsFeatured))
            {
                sb.Append(string.Format("<FieldRef Name='{0}' Ascending='False' />", ZhongsoftConfig.IsFeatured));
            }
            if (list.Fields.ContainsField(ZhongsoftConfig.List_Created))
            {
                sb.Append(string.Format("<FieldRef Name='{0}' Ascending='False' />", ZhongsoftConfig.List_Created));
            }
            if (list.Fields.ContainsField(ZhongsoftConfig.DiscusBody))
            {
                sb.Append(string.Format("<FieldRef Name='{0}' Ascending='False' />", ZhongsoftConfig.DiscusBody));
            }
            if (list.Fields.ContainsField(ZhongsoftConfig.Author))
            {
                sb.Append(string.Format("<FieldRef Name='{0}' Ascending='False' />", ZhongsoftConfig.Author));
            }
            if (list.Fields.ContainsField(ZhongsoftConfig.Modified))
            {
                sb.Append(string.Format("<FieldRef Name='{0}' Ascending='False' />", ZhongsoftConfig.Modified));
            }
            if (list.Fields.ContainsField(ZhongsoftConfig.Editor))
            {
                sb.Append(string.Format("<FieldRef Name='{0}' Ascending='False' />", ZhongsoftConfig.Editor));
            }
            if (list.Fields.ContainsField(ZhongsoftConfig.IsFeatured))
            {
                sb.Append(string.Format("<FieldRef Name='{0}' Ascending='False' />", ZhongsoftConfig.ParentFolderId));
            }
            sb.Append("<FieldRef Name='Created' Ascending='False' /></OrderBy>");
            query.Query = sb.ToString();
            if (rowLimit > 0)
            {
                query.RowLimit = rowLimit;
            }
            return query;
        }
webpart


 private void AddItemsToTable(DataTable dataTable, string list)
        {
            SPList listVar = SPContext.Current.Web.Lists[list];
            SPListItemCollection items = listVar.GetItems(SPCacheFactory.GetQuery(list,0));//  没有权限和有权限的人获取的数据不一样
            foreach (SPListItem item in items)
            {
                string id = Convert.ToString(item["ID"]);
                DataRow dr = dataTable.NewRow();
                dr["ListName"] = list;
                dr[ZhongsoftConfig.List_Title] = item[ZhongsoftConfig.List_Title];
                dr[ZhongsoftConfig.ItemCreateTime] = item[ZhongsoftConfig.ItemCreateTime];
                dr["ID"] = id;
                dataTable.Rows.Add(dr);
            }
        }
我贴那个好使
kx00450 2016-03-29
  • 打赏
  • 举报
回复

 public static SPQuery GetQuery(uint rowLimit, SPList list)
        {
            SPQuery query = new SPQuery();
            query.Query = string.Empty;
            string queryIsShow = string.Empty;
            string queryModerationStatus = string.Empty;
            StringBuilder sb = new StringBuilder();

            if (list.Fields.ContainsField(ZhongsoftConfig.List_Isshow))
            {
                queryIsShow = string.Format(@"<Eq>
                                   <FieldRef Name='{0}' />
                                   <Value Type='Boolean'>1</Value>
                                </Eq>", ZhongsoftConfig.List_Isshow);
            }
            if (list.Fields.ContainsField(ZhongsoftConfig.ModerationStatus))
            {
                queryModerationStatus = string.Format(@"<Eq>
                                   <FieldRef Name='{0}' />
                                   <Value Type='ModStat'>0</Value>
                                </Eq>", ZhongsoftConfig.ModerationStatus);
            }
            if (!string.IsNullOrEmpty(queryIsShow) && !string.IsNullOrEmpty(queryModerationStatus))
            {
                sb.Append(string.Format(@" <Where>
                        <And>
                         {0}
                         {1}
                        </And> 
                   </Where>", queryIsShow, queryModerationStatus));
            }
            else if (!(string.IsNullOrEmpty(queryIsShow) && string.IsNullOrEmpty(queryModerationStatus)))
            {
                sb.Append(string.Format(@" <Where>
                         {0}
                   </Where>", queryIsShow));
            }

            sb.Append("<OrderBy>");

            if (list.Fields.ContainsField(ZhongsoftConfig.List_PictureSort))
            {
                sb.Append(string.Format("<FieldRef Name='{0}' Ascending='True' />", ZhongsoftConfig.List_PictureSort));
            }
            if (list.Fields.ContainsField(ZhongsoftConfig.ItemCreateTime))
            {
                sb.Append(string.Format("<FieldRef Name='{0}' Ascending='False' />", ZhongsoftConfig.ItemCreateTime));
            }
            if (list.Fields.ContainsField(ZhongsoftConfig.List_IsTop))
            {
                sb.Append(string.Format("<FieldRef Name='{0}' Ascending='False' />", ZhongsoftConfig.List_IsTop));
            }
            if (list.Fields.ContainsField(ZhongsoftConfig.IsFeatured))
            {
                sb.Append(string.Format("<FieldRef Name='{0}' Ascending='False' />", ZhongsoftConfig.IsFeatured));
            }
            if (list.Fields.ContainsField(ZhongsoftConfig.List_Created))
            {
                sb.Append(string.Format("<FieldRef Name='{0}' Ascending='False' />", ZhongsoftConfig.List_Created));
            }
            if (list.Fields.ContainsField(ZhongsoftConfig.DiscusBody))
            {
                sb.Append(string.Format("<FieldRef Name='{0}' Ascending='False' />", ZhongsoftConfig.DiscusBody));
            }
            if (list.Fields.ContainsField(ZhongsoftConfig.Author))
            {
                sb.Append(string.Format("<FieldRef Name='{0}' Ascending='False' />", ZhongsoftConfig.Author));
            }
            if (list.Fields.ContainsField(ZhongsoftConfig.Modified))
            {
                sb.Append(string.Format("<FieldRef Name='{0}' Ascending='False' />", ZhongsoftConfig.Modified));
            }
            if (list.Fields.ContainsField(ZhongsoftConfig.Editor))
            {
                sb.Append(string.Format("<FieldRef Name='{0}' Ascending='False' />", ZhongsoftConfig.Editor));
            }
            if (list.Fields.ContainsField(ZhongsoftConfig.IsFeatured))
            {
                sb.Append(string.Format("<FieldRef Name='{0}' Ascending='False' />", ZhongsoftConfig.ParentFolderId));
            }
            sb.Append("<FieldRef Name='Created' Ascending='False' /></OrderBy>");
            query.Query = sb.ToString();
            if (rowLimit > 0)
            {
                query.RowLimit = rowLimit;
            }
            return query;
        }
webpart


 private void AddItemsToTable(DataTable dataTable, string list)
        {
            SPList listVar = SPContext.Current.Web.Lists[list];
            SPListItemCollection items = listVar.GetItems(SPCacheFactory.GetQuery(list,0));//  没有权限和有权限的人获取的数据不一样
            foreach (SPListItem item in items)
            {
                string id = Convert.ToString(item["ID"]);
                DataRow dr = dataTable.NewRow();
                dr["ListName"] = list;
                dr[ZhongsoftConfig.List_Title] = item[ZhongsoftConfig.List_Title];
                dr[ZhongsoftConfig.ItemCreateTime] = item[ZhongsoftConfig.ItemCreateTime];
                dr["ID"] = id;
                dataTable.Rows.Add(dr);
            }
        }

3,244

社区成员

发帖
与我相关
我的任务
社区描述
企业开发 SharePoint
社区管理员
  • SharePoint社区
  • 霖雨 - LinyuLoveTJ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧