2011-03-28 33 views
1

標題幾乎總結了我正在尋找的內容。 我在Visual Studio 2010中爲SharePoint 2010解決方案創建了一個自定義WebPart,該派生自ContentByQueryWebPart。 WebPart的目的是向用戶顯示從多個任務列表中獲取的他們自己任務的概覽。目前沒有問題。以編程方式在繼承自ContentByQueryWebPart的自定義WebPart的QueryOverride成員上設置CAML查詢

但是,我已經重寫了OnInit-Method以便從url-query(使用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); 
} 

我希望有人有一個想法。任何幫助讚賞。如果還有不清楚的地方,請不要猶豫,問問。

馬庫斯施瓦爾貝

注意:英語不是我的第一語言,所以請原諒我,因爲我已經在這個崗位上做出了每一個錯誤。 :)

回答

0

我找到了解決方案來做到這一點。 似乎不想將UserID標記作爲值。

當您使用當前(或任何其他)SPUser對象的Name屬性並將該值的類型更改爲「Text」時,它的工作原理類似於:魅力 (此外,您可以將Query-tag走和「可以用」來代替,這看起來有點清潔劑)

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

我希望這可以幫助任何人,誰擁有了同樣的問題。 誠懇,

馬庫斯施瓦爾貝

相關問題