TIPS: ドキュメント ライブラリの使用量を一覧表示する

ドキュメント ライブラリの使用量を一覧表示する方法です。

先日のプロジェクト内で、Web パーツを DLL で開発するという話が出ていたので、利用を限定するのであれば、別解としてSharePoint デザイナーだけで完結する方法があるので、ここに記載します。

要は、aspx ページ内に ASP.NET 2.0 の標準コントロールを使用して、下記の SQL を実行する SQLDataSource と、DataList コントロールを使えばおしまいです。

SQL

SELECT TOP 1000 L.tp_Title,U.ListId,SUM(Size) as size
  FROM [WSS_Content_Portal].[dbo].AllDOcs U
  INNER JOIN [WSS_Content_Portal].[dbo].[Webs] W
  ON W.SiteId = U.SiteId
  INNER JOIN   [WSS_Content_Portal].[dbo].AllLists L
  ON L.tp_ID = U.ListId
  WHERE W.FullUrl = 'site2'
 group by L.tp_Title,U.ListId
  <asp:DataList runat="server" id="DataList1" DataSourceID="SampleSqlDataSource1" Width="500px">
	<HeaderTemplate>
            <table border="1" style="width: 100%; border-collapse: collapse; font-size: 12px;" cellspacing="0">
            <thead>
                <tr style="background: orange">
                    <th style="font-weight:bold">ライブラリ名</th>
                    <th style="font-weight:bold">サイズ</th>
                </tr>
            </thead>
		</HeaderTemplate>
		<ItemTemplate>
			<tr>
			<td style="padding: 4px"><asp:Label Text='<%# Bind("tp_Title") %>' runat="server" id="tp_TitleLabel" /></td>
			<td style="padding: 4px"><asp:Label Text='<%# Bind("size") %>' runat="server" id="sizeLabel" /></td>
			</tr>
		</ItemTemplate>
		<FooterTemplate>
		  </table>
		</FooterTemplate>
	</asp:DataList>
	<asp:SqlDataSource runat="server" ProviderName="System.Data.SqlClient" ID="SampleSqlDataSource1" ConnectionString="Data Source=db1.contoso.com;User ID=ユーザー名;Password=パスワード;Initial Catalog=WSS_Content_Portal;" SelectCommand="SELECT TOP 1000 L.tp_Title,U.ListId,SUM(Size) as size    FROM [WSS_Content_Portal].[dbo].AllDOcs U    INNER JOIN [WSS_Content_Portal].[dbo].[Webs] W    ON W.SiteId = U.SiteId    INNER JOIN   [WSS_Content_Portal].[dbo].AllLists L    ON L.tp_ID = U.ListId         WHERE W.FullUrl = 'site2'  group by L.tp_Title,U.ListId  " __designer:customcommand="true">
	</asp:SqlDataSource>

表示例

データベース名、サイト名などはパラメーター化することができます。
参考:
http://learn.microsoft.com/en-us/aspnet/web-forms/overview/data-access/accessing-the-database-directly-from-an-aspnet-page/inserting-updating-and-deleting-data-with-the-sqldatasource-cs/_static/datatutorial49cs1.pdf

また、DataVormWeb パーツにすることで、汎用性を出すこともできます。
参考:
Explore SharePoint Products and Technologies: Data View web part in SharePoint 2007

この辺りの手順はほかのサイトに任せることにします。

注意
この例では、SharePoint のデータベースに接続するユーザー名とパスワードを Plane Text で指定しています。
そのため、SQL Server 上では、
(1) パブリック (一般ユーザーが閲覧してよい) なデータモデルとしてビューまたはプロシージャ-を作成する
(2) パブリックなデータモデルを参照するためのユーザーを作成し、(1) のビューに権限を付与する
としておくことをお勧めします。
なお、SharePoint の aspx 内にある データソース コントロールに Integrated Security=True のようなパラメーターを指定することはできません。

コメントを残す