1

こんにちはstackoverflowコミュニティ

このフォーラムから多くの助けを得ました。今回は見つけられませんでしたが。

ASP.NET アプリケーションを作成し、SharePoint WebService を使用してリストの項目を取得しようとしています。

これまでのところ、CAML リクエストを使用してリスト全体を取得することに成功していますが、指定された 2 つの日付の間の項目を選択する必要があります

私はこれについて多くの助けを見つけ、この方法を使用して ISO 8601 日付文字列をフォーマットしています:

private string FormatDateForCAML(DateTime theDate)
{
    string result = theDate.ToString("yyyy-MM-ddTHH:mm:ssZ");
    return result;
}

そして、ここに CAML リクエストのビルドがあります:

System.Xml.XmlElement query = xmlDoc.CreateElement("Query");
query.InnerXml = 
        "<Where>"+
            "<And>"+
              "<Geq>"+
                  "<FieldRef Name=\"startdate\" />"+
                  "<Value Type=\"DateTime\" IncludeTimeValue=\"True\">" + theStart + "</Value>" +
              "</Geq>"+
              "<Lt>" +
                  "<FieldRef Name=\"enddate\" />" +
                  "<Value Type=\"DateTime\" IncludeTimeValue=\"True\">" + theEnd+ "</Value>" +
              "</Lt>" +
            "</And>"+
        "</Where>";

このクエリでエラーが返されることはありません:

System.Xml.XmlNode nodeListItems = listService.GetListItems(listName, viewName, query, viewFields, rowLimit, queryOptions, null);

しかし、返されたリストはnullではありませんが、そうではありません

助けてくれてありがとう。

編集:私は最終的に成功しました。問題は間違ったリクエストから発生しました。ここに適切なバージョンがあります

System.Xml.XmlElement query = xmlDoc.CreateElement("Query");
query.InnerXml = 
        "<Where>"+
            "<And>"+
              "<Geq>"+
                  "<FieldRef Name=\"startdate\" />"+
                  "<Value Type=\"DateTime\" IncludeTimeValue=\"True\">" + theStart + "</Value>" +
              "</Geq>"+
              "<Lt>" +
                  "<FieldRef Name=\"startdate\" />" +
                  "<Value Type=\"DateTime\" IncludeTimeValue=\"True\">" + theEnd+ "</Value>" +
              "</Lt>" +
            "</And>"+
        "</Where>";

Roqz のおかげで、私は CAML ビューアーを使用しましたが、問題が発生しました。開始日のみを比較する必要がありました。

助けてくれてありがとう:)

4

3 に答える 3