以编程方式设置来自ContentByQueryWebpart继承的自定义WebPart的QueryOverride-Mement上的CAML查询

StackOverflow https://stackoverflow.com/questions/5457223

标题几乎符合,我在寻找什么。 我在Visual Studio 2010中创建了一个自定义WebPart,用于SharePoint 2010解决方案,它来自ContentByQueryWebPart。 WebPart的目的是向用户概述自己任务,从多个任务列表中获取。到目前为止没有问题。

但,我已经覆盖了oninit-方法,以便从URL查询(使用Page.Request)来完成一些自定义过滤,分组和排序。 问题是,定制CQWP不会采用我创建的CAML字符串。

我已经尝试了一些方法,但他们都没有似乎工作。我甚至将其剥落到最低限度。也许我设置QueryOverride的位置是错误的。 (oninit / onload / base之前或之后。****(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);
}
.

我希望有人有一个想法。任何帮助感激。如果仍有一些不清楚的话,请不要犹豫。

markus schwalbe

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

有帮助吗?

解决方案

我找到了解决这个问题。 似乎它不希望使用userid标签作为值。

当您使用当前(或任何其他)spuser-object的名称 - 属性并将值的类型更改为“text”时,它工作就像魅力一样? (此外,您可以将查询标签留下,“可以用”替换,看起来有点清洁)

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

我希望这有助于任何有同样的问题的人。 真诚,

markus schwalbe

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top