1

标题几乎概括了我在寻找什么。我在 Visual Studio 2010 中为 SharePoint 2010 解决方案创建了一个自定义 WebPart,它派生自 ContentByQueryWebPart。WebPart 的目的是向用户展示他们自己的任务的概览,这些任务来自多个任务列表。到目前为止没有问题。

但是,我重写了 OnInit 方法,以便从 url 查询(使用 Page.Request)中获取一些数据,以进行一些自定义过滤、分组和排序。问题是,自定义 CQWP 不会采用我创建的 CAML 字符串。

我已经尝试了一些方法,但它们似乎都不起作用。我什至将它剥离到最低限度。也许我设置 QueryOverride 的地方是错误的。(OnInit / OnLoad / base.On****(e); 之前或之后?)现在,它看起来像这样:

protected override void OnInit(EventArgs e)
{
    string query = "<Query><Where><Eq><FieldRef Name=\"AssignedTo\" /><Value Type=\"User\"><UserID /></Value></Eq></Where></Query>";
    this.QueryOverride = query;
    base.OnInit(e);
}

我希望有人有一个想法。任何帮助表示赞赏。如果还有什么不清楚的地方,请不要犹豫。

马库斯·施瓦尔贝

注意:英语不是我的母语,所以请原谅我在这篇文章中犯的每一个错误。:)

4

1 回答 1

0

我找到了一个解决方案来做到这一点。似乎它不希望将 UserID-tag 作为值。

当您使用当前(或任何其他)SPUser 对象的名称属性并将值的类型更改为“文本”时,它就像一个魅力:(此外,您可以离开查询标签并且“可以替换为',看起来更干净)

this.QueryOverride = "<Where><Eq><FieldRef Name='AssignedTo' /><Value Type='Text'>" + SPContext.Current.Web.CurrentUser.Name + "</Value></Eq>";

我希望这可以帮助任何有同样问题的人。真诚地,

马库斯·施瓦尔贝

于 2011-03-29T09:17:27.733 回答