1

SharePoint (Schema.xml) でイベント リストのビューを作成しており、DateTime に従って結果をフィルター処理したい (つまり、2 つの日付の間に開始するイベントのみを表示する)

通常、たとえば次のような CAML クエリを使用します。

         <Where>
            <And>
              <Geq>
                <FieldRef Name="Event_x0020_Start_x0020_Date" />
                <Value Type=”DateTime”&gt;2009-10-10T10:00:00Z</Value>
              </Geq>
              <Leq>
                <FieldRef Name="Event_x0020_Start_x0020_Date" />
                <Value Type=”DateTime”&gt;2009-11-10T10:00:00Z</Value>
              </Leq>
            </And>
          </Where>

ただし、この場合、比較したい日付はフィールドで直接使用できないため、クエリ文字列から取得する必要があります。

使ってみた

        <Value Type="DateTime">
          <GetVar Scope="Request" Name="Start" />
        </Value>
        <Value Type="DateTime">
          <GetVar Scope="Request" Name="End" />
        </Value>

Start と End はクエリ文字列の 2 つの日付です (Type="DateTime" の有無にかかわらず、すべての日付形式を試しました) が、常に空の結果が得られます。日付をハードコーディングすると、クエリは正常に機能します (たとえば、2009-10-10T10:00:00Z)。

クエリ文字列で送信する内容を制御できるので、別の方法があれば変更できます。

では、クエリ文字列で DateTime 形式を取得する方法はありますか? そうでない場合、他に選択肢はありますか?

ありがとう!

4

3 に答える 3

3

カスタムページを追加してから、それにDataFormWebPart(DFWP)を追加してみましたか?これにより、SPDataSourceのパラメーターで指定されたパラメーターとして使用される実際のASP.NETカレンダーコントロールを使用して、DFWPで使用されるSPDatasourceのSelectCommandでCAMlクエリを形成できます。spdatasourceのパラメータバインディングでControl(ID、PROPERTYTOUSEINCAML)を使用します。

すなわち:

<ParameterBinding Name="StartDate" Location="Control(calStart, SelectedDate)" DefaultValue="01-01-2009"/>
<ParameterBinding Name="EndDate" Location="Control(calEnd, SelectedDate)" DefaultValue="01-01-2009"/>

次に、SelectCommandのCAMLを次のようにします。

<Where>
  <And>
    <Geq>
      <FieldRef Name="Event_x0020_Start_x0020_Date" />
      <Value Type=”DateTime”&gt;{StartDateParameter}</Value>
    </Geq>
    <Leq>
      <FieldRef Name="Event_x0020_Start_x0020_Date" />
      <Value Type=”DateTime”&gt;{EndDateParameter}</Value>
    </Leq>
  </And>
</Where>
于 2009-11-01T05:42:42.510 に答える
0

まず、CAMLでよくある間違いは、フィールドの内部名を使用しないことです...を使用してみてください

list.Fields["Display Name"].InternalName  

次に、SPUtilityの日付ユーティリティを使用します

Microsoft.SharePoint.Utilities.SPUtility.CreateISO8601DateTimeFromSystemDateTime(System.DateTime.Now)
于 2009-11-01T02:01:24.830 に答える
-1

クエリ文字列の正しい日付形式は yyyy-mm-dd です。この投稿を参照してください

于 2015-03-24T14:33:14.560 に答える