SPDataSource.DataSourceMode 属性

获取或设置一个值,指定的查询的数据的类型。

命名空间:  Microsoft.SharePoint.WebControls
程序集:  Microsoft.SharePoint(位于 Microsoft.SharePoint.dll 中)

语法

声明
Public Property DataSourceMode As SPDataSourceMode
    Get
    Set
用法
Dim instance As SPDataSource
Dim value As SPDataSourceMode

value = instance.DataSourceMode

instance.DataSourceMode = value
public SPDataSourceMode DataSourceMode { get; set; }

属性值

类型:Microsoft.SharePoint.WebControls.SPDataSourceMode
一个SPDataSourceMode值。默认值是SPDataSourceMode.List。

备注

DataSourceMode属性的值指定的查询的数据的类型。可能值SPDataSourceMode枚举中定义,并包括列表、 ListItem、 CrossList、 ListOfLists 和网站。

示例

DataSourceMode.List

在List模式下,基础数据源是SharePoint Foundation列表。在以下示例中, SPDataSource控件用于从根网站中的任务列表中检索数据。请注意由 ListName 和 WebID 参数标识的列表和网站。控件还可识别 ListID 和 WebURL 的参数名称。有关详细信息,请参阅SelectParameters属性。

在示例中,通过将SPDataSource控件的ID属性的值分配给该绑定的控件的DataSourceID属性的数据源控件链接到的数据绑定GridView控件。

<SharePoint:SPDataSource
    ID="SPDataSource1" 
    runat="server" 
    DataSourceMode="List"
    UseInternalName="true" 
    SelectCommand="<Query><OrderBy><FieldRef Name='DueDate' Ascending='true' /></OrderBy></Query>"> 
    <SelectParameters>
        <asp:Parameter Name="ListName" DefaultValue="Tasks" />
        <asp:Parameter Name="WebID" DefaultValue="RootWeb" />
    </SelectParameters>
</SharePoint:SPDataSource>

<asp:GridView 
    ID="GridView1" 
    runat="server" 
    DataSourceID="SPDataSource1" 
    AutoGenerateColumns="false">
    <Columns>
        <asp:BoundField HeaderText="Due Date" DataField="DueDate" />
        <asp:BoundField HeaderText="Priority" DataField="Priority" />
        <asp:BoundField HeaderText="Title" DataField="Title" />
        <asp:BoundField HeaderText="Status" DataField="Status" />
   </Columns>
</asp:GridView>

包含此标记的网页呈现时, SPDataSource控件将自动填充请求的列表数据网格。控件返回的每个列表项的数据的一行。

DataSourceMode.ListItem

在ListItem模式下,该控件从单个列表项中检索数据。与参数标识的 Web 网站、 标识的列表中,一个参数和标识的列表项的参数,必须在SelectParameters中发现的目标项。在以下示例中,ListItemID 参数指定的通知列表中的第一项。

<SharePoint:SPDataSource  
    ID="SPDataSource1" 
    runat="server" 
    DataSourceMode="ListItem"
    UseInternalName="true" >
    <SelectParameters>
        <asp:Parameter Name="WebID" DefaultValue="RootWeb" />
        <asp:Parameter Name="ListName" DefaultValue="Announcements" />
        <asp:Parameter Name="ListItemID" DefaultValue="1" />
    </SelectParameters>
</SharePoint:SPDataSource>

<asp:GridView 
    ID="GridView1" 
    runat="server" 
    DataSourceID="SPDataSource1" 
    AutoGenerateColumns="false">
    <Columns>
        <asp:BoundField HeaderText="Title" DataField="Title" />
        <asp:BoundField HeaderText="Expires" DataField="Expires" />
   </Columns>
</asp:GridView>

包含此标记的网页呈现时, GridView控件会自动填入一行包含请求的字段值的数据。

DataSourceMode.CrossList

在CrossList模式下,您可以查询在同一网站集中的多个 Web 站点中的多个列表中的项目。该效果是类似于在网站集中使用针对列表SPSiteDataQuery类的实例。

下面的示例查询日历列表 (列出类型 106),询问的约会位置的位置是"您的 office"和日期为今天。查询的结果自动填充数据绑定GridView控件,显示的数据。

备注

在示例中的SelectCommand字符串已经过修改以使其更容易阅读。实际的 ASP.NET 页上的字符串应在单行上。

<SharePoint:SPDataSource ID="SPDataSource1" runat="server"
    DataSourceMode="CrossList"
    UseInternalName="true" 
    SelectCommand="<Webs Scope='Recursive'></Webs>
                   <Lists ServerTemplate='106'></Lists>
                   <View>
                      <ViewFields>
                         <FieldRef Name='EventDate'/>
                         <FieldRef Name='Title'/>
                         <FieldRef Name='Location'/
                      </ViewFields>
                      <Query>
                         <Where>
                            <And>
                               <Eq>
                                 <FieldRef Name='Location'/>
                                 <Value Type='Text'>Your office</Value>
                               </Eq>
                               <Eq>
                                 <FieldRef Name='EventDate'/>
                                 <Value Type='DateTime'><Today/></Value>
                               </Eq>
                            </And>
                         </Where>
                      </Query>
                   </View>" >
</SharePoint:SPDataSource>
      
<asp:GridView ID="GridView1" runat="server" 
    DataSourceID="SPDataSource1" 
    AutoGenerateColumns="false" Width="75%" HeaderStyle-HorizontalAlign="Left" >
    <Columns>
        <asp:BoundField HeaderText="Date" DataField="EventDate" />
        <asp:BoundField HeaderText="Title" DataField="Title" />
        <asp:BoundField HeaderText="Location" DataField="Location" />
    </Columns>
</asp:GridView>

请注意SPDataSource控件的标记有没有SelectParameters组件。所有工作是通过分配给SelectCommand属性的协作应用程序标记语言 (CAML) 片段。此片段包含有些不正常的两个元素: 网站和列表。

  • Webs 元素

    此元素指定查询的范围。"递归"作用域包括当前网站的所有子网站。"网站集"作用域包括在网站集中的所有网站。有关详细信息,请参阅Webs属性。

    当您使用 Webs 元素与SPDataSource控件时,标记不能自结束,如 < Web / >。您必须使用单独的开始和结束标记,< Webs >< / Webs >。

  • Lists 元素

    此元素限制到特定列表或特定类型的列表的查询。Lists 元素的属性可以指定 ServerTemplate 或 BaseType。在示例中,Lists 元素为日历列表查询限制通过将 ServerTemplate 属性的值设置为 106。此外,一个或多个列表子元素可以限制查询到由 ID 标识的列表或具有指定的索引的字段的列表。有关详细信息,请参阅Lists属性。

DataSourceMode.ListOfLists

在ListOfLists模式下,该控件检索指定网站中列表的属性。如果未不指定任何网站,则使用当前上下文中的网站。数据源控件返回的每个列表数据的一行。在每行中的字段对应于SPList对象的属性。

在以下示例中, GridView控件的标记将所选的数据字段绑定到网格的列。注释标记通过使用SystemPropertyPrefix字段中的值作为前缀SPList对象属性名称引用的数据字段"__sp"。例如,标记使用名称"__spTitle" Title属性引用。

<SharePoint:SPDataSource 
    ID="SPDataSource1" 
    runat="server"
    DataSourceMode="ListOfLists" >
    <SelectParameters>
        <asp:Parameter Name="WebUrl" DefaultValue="/" />
    </SelectParameters>
</SharePoint:SPDataSource>

<asp:GridView 
    ID="GridView1" 
    runat="server" 
    DataSourceID="SPDataSource1" 
    AutoGenerateColumns="false" >
    <Columns>
        <asp:BoundField HeaderText="List Title" DataField="__spTitle" />
        <asp:BoundField HeaderText="Description" DataField="__spDescription" />
        <asp:BoundField HeaderText="URL" DataField="__spDefaultViewUrl" />
    </Columns>
</asp:GridView>

DataSourceMode.Webs

在Webs模式下,该控件检索当前网站的子网站的属性。数据源控件返回的每个子网站的数据的一行。字段中数据的每一行对应于SPWeb对象的属性。

在以下示例中, GridView控件的标记将所选的数据字段绑定到网格的列。请注意标记引用的数据字段,通过使用带有"__sp"前缀SPWeb对象属性名称。例如,标记使用名称"__spUrl" Url属性引用。

<SharePoint:SPDataSource 
    ID="SPDataSource1" 
    runat="server" 
    DataSourceMode="Webs" 
    IncludeHidden="true"> 
    <SelectParameters>
        <asp:Parameter Name="WebId" DefaultValue="RootWeb" />
    </SelectParameters>
</SharePoint:SPDataSource>

<asp:GridView 
    ID="GridView1" 
    runat="server" 
    DataSourceID="SPDataSource1" 
    AutoGenerateColumns="false">
    <Columns>
        <asp:BoundField HeaderText="Site Title" DataField="__spTitle" />
        <asp:BoundField HeaderText="URL" DataField="__spUrl" />
        <asp:BoundField HeaderText="ID" DataField="__spID" />
        <asp:BoundField HeaderText="Web Template" DataField="__spWebTemplate" />
        <asp:BoundField HeaderText="Web Template Id" DataField="__spWebTemplateId" />
    </Columns>
</asp:GridView>

SPDataSource控件将自动填充数据网格。您可以通过调用GetSubwebsForCurrentUser()方法,然后枚举该方法返回的SPWeb对象的集合实现类似的结果捕获每个对象的属性值。

另请参阅

引用

SPDataSource 类

SPDataSource 成员

Microsoft.SharePoint.WebControls 命名空间

DataFormParameter