0

フィールド値に基づいてSharePointリストから単一の値を選択する必要があります。フィールドのタイプはLinkFieldValueです。CAMLクエリはどのように作成すればよいですか?

空のクエリでアイテムを選択すると、期待どおりにリスト内のすべてのアイテムを受け取ります。

クエリに制約を追加すると、空の結果が返されます。私は次のようにクエリを作成しようとしました:

string.Format("<Where><Eq><FieldRef Name=\"PollInstancePoll\" /><Value "
+"Type=\"Text\">{0}</Value></Eq></Where>",
new LinkFieldValue { NavigateUrl = "/az/Lists/Polls/DispForm.aspx?ID=1",
Text = "example poll" });

これにより、次のクエリテキストが生成されます。

<Where><Eq><FieldRef Name="PollInstancePoll" />
<Value Type="Text"><a href="/az/Lists/Polls/DispForm.aspx?ID=1">example poll</a></Value>
</Eq></Where>
4

1 に答える 1

1

次のクエリで問題を解決しました。

new SPQuery
{
    Query =
        CAML.Where(
            CAML.And(
                CAML.Contains(
                    CAML.FieldRef("PollInstancePoll"),
                    CAML.Value(pollPath)),
                CAML.Contains(
                    CAML.FieldRef("PollInstancePage"),
                    CAML.Value(pagePath))))
};

基本的に、リンクフィールドのURL部分のみをチェックし、比較用の値をとして提供していますType="Text"。SharePointは、値を常にサーバー相対URLとしてデータベースに保存することを覚えておくことが重要です。

于 2010-07-12T09:28:30.673 に答える