ContentByQueryWebPartから継承するカスタムWebPartのQueryOverride-MemberでCAML-Queryをプログラムで設定する

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

質問

タイトルはかなり合計して、私が探しているものです。 ContentByQueryWebPartから派生するSharePoint 2010ソリューションのための、Visual Studio 2010のカスタムWebPartを作成しました。 WebPartの目的は、複数のタスクリストから取得された、ユーザーに独自のタスクの概要を表示することです。これまでの問題はありません。

しかし、URL-Query(Page.Request)のデータをいくつかのカスタムフィルタリング、グループ化、およびソートを実行するために、oninit-methodを上書きしました。 問題は、カスタム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);
}
.

誰かがアイデアを持っていることを願っています。あらゆる助けがあります。まだ不明なものがある場合は、お気軽にお問い合わせください。

Markus Schwalbe

注:英語は私の最初の言語ではないので、この投稿で私が作ったあらゆる間違いのために私をすみませんしてください。 :)

役に立ちましたか?

解決

これを行うための解決策を見つけました。 userid-tagを値として望んでいなかったようです。

現在の(または他の任意の)spuser-objectのname属性を使用し、値のタイプを "text"に変更すると、チャームのように機能します。 (また、query-tagを離れておくことができ、「Flinda Cleanerによる」という「返信できます。

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