Get the Current Site collection UsedData
.ascx
<style type="text/css">
.GridHeader
{
background-color:#156db4 !Important;
height: 30px;
width:auto;
}
.Rows
{
background-color:#d8d8d8;
height: 30px;
background-repeat: repeat-x;
text-align:center;
color:#002a76;
}
.Rows1
{
background-color:White;
height: 30px;
background-repeat: repeat-x;
text-align:center;
color:#002a76;
}
.linkButton
{
color: #CD853F !Important;
cursor : hand ;
background-color:#156db4 !Important;
font-weight: bold;
height: 30px;
width:auto;
}
</style>
<asp:Label ID="lblist" runat="server"></asp:Label>
<asp:Label ID="lblwebSize" runat="server"></asp:Label>
<asp:Label ID="lblSiteCollectionData" runat="server" CssClass="Rows" ></asp:Label>
<asp:GridView ID="spGridWebSiteUsedData" runat="server" AutoGenerateColumns="false">
<HeaderStyle CssClass="linkButton" />
<RowStyle CssClass="Rows" />
<AlternatingRowStyle CssClass="Rows1" />
<Columns>
<asp:TemplateField >
<HeaderTemplate >
<asp:Label ID="lblWebSiteName" Text="Web Site Name" runat="server" />
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="lblSebSite"
Text='<%# Eval("Web Name") %>' runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField >
<HeaderTemplate >
<asp:Label ID="lblWebSiteUsedData" Text="Web Site Name" runat="server" />
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="lblUsedData"
Text='<%# Eval("Used Data") %>' runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField >
<HeaderTemplate >
<asp:Label ID="lblWebSiteData" Text="Web Site Size" runat="server" />
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="lblUsedDatasize"
Text='<%# Eval("WebSize") %>' runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<br />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
<HeaderStyle CssClass="linkButton" />
<RowStyle CssClass="Rows" />
<AlternatingRowStyle CssClass="Rows1" />
<Columns>
<asp:TemplateField >
<HeaderTemplate >
<asp:Label ID="lblListName" Text="ListName" runat="server" />
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="lblListNames"
Text='<%# Eval("tp_Title") %>' runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField >
<HeaderTemplate >
<asp:Label ID="lblItemsSize" Text="ItemsSize" runat="server" />
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="lblItemsSizes"
Text='<%# Eval("tp_ItemCount") %>' runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField >
<HeaderTemplate >
<asp:Label ID="lblItemCount" Text="ListItemsCount" runat="server" />
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="lblItemCount"
Text='<%# Eval("TotalSize") %>' runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<br />
<!-- ListReport-->
<asp:Label ID="listTotalSize" runat="server"></asp:Label>
<asp:GridView ID="gvListReport" runat="server" AutoGenerateColumns="false">
<HeaderStyle CssClass="linkButton" />
<RowStyle CssClass="Rows" />
<AlternatingRowStyle CssClass="Rows1" />
<Columns>
<asp:TemplateField >
<HeaderTemplate >
<asp:Label ID="lblhlistName" Text="ListName" runat="server" />
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="lblListNameName"
Text='<%# Eval("ListNameName") %>' runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField >
<HeaderTemplate >
<asp:Label ID="lblhListSize" Text="ListSizee" runat="server" />
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="lblSize"
Text='<%# Eval("Size") %>' runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField >
<HeaderTemplate >
<asp:Label ID="lblhItemscount" Text="Itemscount" runat="server" />
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="lblItemsCount"
Text='<%# Eval("ItemsCount") %>' runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField >
<HeaderTemplate >
<asp:Label ID="lblhListType" Text="ListType" runat="server" />
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="lblListType"
Text='<%# Eval("ListType") %>' runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField >
<HeaderTemplate >
<asp:Label ID="lblhWebUrl" Text="WebUrl" runat="server" />
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="lblWebUrl"
Text='<%# Eval("WebUrl") %>' runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
.cs
public DataTable table1
{
get { return (DataTable)ViewState["Table1"]; }
set
{
ViewState["Table1"] = value;
}
}
public DataTable table
{
get { return (DataTable)ViewState["Table"]; }
set
{
ViewState["Table"] = value;
}
}
public DataTable ListReporttable
{
get { return (DataTable)ViewState["ListReporttable"]; }
set
{
ViewState["ListReporttable"] = value;
}
}
protected void Page_Load(object sender, EventArgs e)
{
long webUsedData = 0;
double totalData = 0;
SPSite site = SPContext.Current.Site;
ListReporttable = CreateListReportTable();
String title = site.OpenWeb().Title;
table= CreateTable();
string webId=string.Empty;
using (SPSite oSite = new SPSite(site.ID))
{
foreach (SPWeb oWeb in oSite.AllWebs)
{
webId=Convert.ToString(oWeb.ID);
table1 = null;
#region Newcode
// string SizeWithUnitMeasure;
string withUnitMeasure;
double webSizeInBytes = GetWebSizeWithUnitMeasure(oWeb, out withUnitMeasure);
lblwebSize.Text = webSizeInBytes.ToString("0.##");
// string listSizeWithMeasure;
//double listSizeInBytes = GetListSizeWithUnit(list, out listSizeWithMeasure);
//lblist.Text = Convert.ToString(listSizeInBytes);
//Use the listSizeWithMeasureto print with the measure
//Use the SizeWithUnitMeasure to print with the measure.
#endregion
webUsedData = GetWebSize(oWeb);
Double usedData = webUsedData;
usedData = Convert.ToDouble((usedData / (1024 * 1024)).ToString("0.##"));
DataRow row1;
if(table1!=null)
row1 = table1.NewRow();
DataRow row = table.NewRow();
row["Web Name"] = oWeb.Title;
row["Used Data"] = Convert.ToString(usedData + " MB ");
row["WebSize"] = webSizeInBytes.ToString("0.##") + "MB";
table.Rows.Add(row);
totalData += usedData;
oWeb.Dispose();
}
lblSiteCollectionData.Text = "Total Data used by " + title + " Site collection is: " + Convert.ToString(totalData) + " MB ";
}
DataTable newTable = new DataView(table1, "tp_WebID = '" + webId + "'", "", DataViewRowState.CurrentRows).ToTable();
GridView1.DataSource = newTable;
GridView1.DataBind();
spGridWebSiteUsedData.DataSource = table;
spGridWebSiteUsedData.DataBind();
// DataRow[] dr = ListReporttable.Select("SUM(Size)");
listTotalSize.Text =Convert.ToString(ListReporttable.Compute("Sum(Size)", ""));
// listTotalSize.Text = ListReporttable.AsEnumerable().Sum(x => x.Field<Double>("Size")).ToString();
gvListReport.DataSource = ListReporttable;
gvListReport.DataBind();
}
private long GetWebSize(SPWeb web)
{
long total = 0;
foreach (SPFolder folder in web.Folders)
{
total += GetFolderSize(folder);
}
foreach (SPWeb subweb in web.Webs)
{
total += GetWebSize(subweb);
subweb.Dispose();
}
foreach (SPFile subweb in web.Files)
{
total += subweb.Length;
}
return total;
}
private long GetFolderSize(SPFolder folder)
{
long folderSize = 0;
foreach (SPFile file in folder.Files)
{
folderSize += file.Length;
}
foreach (SPFolder subfolder in folder.SubFolders)
{
folderSize += GetFolderSize(subfolder);
}
return folderSize;
}
private DataTable CreateTable()
{
DataTable newTable = new DataTable();
DataColumn col1 = new DataColumn("Web Name", typeof(String));
DataColumn col2 = new DataColumn("Used Data", typeof(String));
DataColumn col3 = new DataColumn("WebSize", typeof(String));
newTable.Columns.Add(col1);
newTable.Columns.Add(col2);
newTable.Columns.Add(col3);
return newTable;
}
private DataTable CreateListReportTable()
{
DataTable newTable = new DataTable();
DataColumn col1 = new DataColumn("ListNameName", typeof(String));
DataColumn col2 = new DataColumn("Size", typeof(Double));
DataColumn col3 = new DataColumn("ItemsCount", typeof(String));
DataColumn col4 = new DataColumn("ListType", typeof(String));
DataColumn col5 = new DataColumn("WebUrl", typeof(String));
newTable.Columns.Add(col1);
newTable.Columns.Add(col2);
newTable.Columns.Add(col3);
newTable.Columns.Add(col4);
newTable.Columns.Add(col5);
return newTable;
}
#region Newcode2
public double DefineSizeWithUnitMeasure(double sizeInBytes, out string unitMeasure)
{
unitMeasure = "Bytes";
double size = sizeInBytes;
if (size > 1024)
{
size = sizeInBytes / 1024d;//KB
unitMeasure = "KB";
}
if (size > 1024)
{
size = size / 1024d;//MB
unitMeasure = "MB";
}
if (size > 1024)
{
size = size / 1024d; //GB
unitMeasure = "GB";
}
if (size > 1024)
{
size = size / 1024d; //TB
unitMeasure = "TB";
}
return size;
}
public double GetWebSizeWithUnitMeasure(SPWeb web, out string withUnitMeasure)
{
double storageUsage = 0d;
double listData = 0d;
double total = 0d;
foreach (SPList list in web.Lists)
{
listData = (double)GetListSizeInBytes(list)/(1024*1024);
storageUsage += listData;
DataRow row = ListReporttable.NewRow();
row["ListNameName"] = list.Title;
row["Size"] = listData;
row["ListType"] = list.BaseType.ToString();
row["ItemsCount"] = Convert.ToString(list.ItemCount);
row["WebUrl"] = list.ParentWebUrl;
ListReporttable.Rows.Add(row);
}
string unitMeasure = "";
double webSize = storageUsage * 1024.0 * 1024.0;// DefineSizeWithUnitMeasure(storageUsage * 1024.0 * 1024.0, out unitMeasure);
withUnitMeasure = string.Format("{0} {1}", webSize.ToString("f"), unitMeasure);
foreach (SPWeb subweb in web.Webs)
{
String t;
storageUsage += GetWebSizeWithUnitMeasure(subweb, out t);
// storageUsage += total;
}
//DataRow row = table.NewRow();
//row["Web Name"] = web.Title;
//row["Used Data"] = Convert.ToString(storageUsage + " MBL ");
//row["WebSize"] = withUnitMeasure;
//table.Rows.Add(row);
return storageUsage;
}
public double GetListSizeWithUnit(SPList list, out string withUnitMeasure)
{
double listSizeinBytes = (double)GetListSizeInBytes(list);
string unitMeasure = "";
double listSize = DefineSizeWithUnitMeasure(listSizeinBytes, out unitMeasure);
withUnitMeasure = string.Format("{0} {1}", listSize.ToString("f"), unitMeasure);
return listSizeinBytes;
}
public long GetListSizeInBytes(SPList list)
{
long listSize = 0;
string filter = string.Format("tp_id='{0}'", list.ID);
DataTable myDataTable = GetCachedSiteCollectionListSizes(list.ParentWeb.Site);
if(table1!=null)
table1.Merge(myDataTable);
else
table1 = myDataTable;
DataRow[] dataRows = myDataTable.Select(filter);
if (dataRows.Length > 0)
{
listSize = (long)dataRows[0]["TotalSize"];
}
return listSize;
}
public DataTable m_SiteCollectionListSizes;
public Guid m_SiteCollectionListSizesSiteID;
private DataTable GetCachedSiteCollectionListSizes(SPSite site)
{
if (m_SiteCollectionListSizes == null || m_SiteCollectionListSizesSiteID != site.ID)
{
m_SiteCollectionListSizes = GetSiteCollectionListSizes(site);
m_SiteCollectionListSizesSiteID = site.ID;
}
return m_SiteCollectionListSizes;
}
private DataTable GetSiteCollectionListSizes(SPSite site)
{
DataTable dataTable = GetDocLibSizes(site);
//Combine both list and doc lib size results
dataTable.Merge(GetListSizes(site));
return dataTable;
}
private DataTable GetDocLibSizes(SPSite site)
{
string connectionString = site.WebApplication.ContentDatabases[site.ContentDatabase.Id].DatabaseConnectionString;
string storedProcName = "proc_GetDocLibrarySizes";
System.Data.SqlClient.SqlConnection connection = null;
System.Data.SqlClient.SqlDataReader reader = null;
DataTable dataTable = null;
try
{
connection = new System.Data.SqlClient.SqlConnection(connectionString);
connection.Open();
System.Data.SqlClient.SqlCommand command = new System.Data.SqlClient.SqlCommand(storedProcName, connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new System.Data.SqlClient.SqlParameter("@SiteId", site.ID.ToString()));
reader = command.ExecuteReader();
dataTable = new DataTable();
dataTable.Load(reader);
}
finally
{
if (reader != null)
reader.Close();
if (connection != null)
connection.Close();
}
return dataTable;
}
private DataTable GetListSizes(SPSite site)
{
string connectionString = site.WebApplication.ContentDatabases[site.ContentDatabase.Id].DatabaseConnectionString;
string storedProcName = "proc_GetListSizes";
System.Data.SqlClient.SqlConnection connection = null;
System.Data.SqlClient.SqlDataReader reader = null;
DataTable dataTable = null;
try
{
connection = new System.Data.SqlClient.SqlConnection(connectionString);
connection.Open();
System.Data.SqlClient.SqlCommand command = new System.Data.SqlClient.SqlCommand(storedProcName, connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new System.Data.SqlClient.SqlParameter("@SiteId", site.ID.ToString()));
reader = command.ExecuteReader();
dataTable = new DataTable();
dataTable.Load(reader);
}
finally
{
if (reader != null)
reader.Close();
if (connection != null)
connection.Close();
}
return dataTable;
}
#endregion
.ascx
<style type="text/css">
.GridHeader
{
background-color:#156db4 !Important;
height: 30px;
width:auto;
}
.Rows
{
background-color:#d8d8d8;
height: 30px;
background-repeat: repeat-x;
text-align:center;
color:#002a76;
}
.Rows1
{
background-color:White;
height: 30px;
background-repeat: repeat-x;
text-align:center;
color:#002a76;
}
.linkButton
{
color: #CD853F !Important;
cursor : hand ;
background-color:#156db4 !Important;
font-weight: bold;
height: 30px;
width:auto;
}
</style>
<asp:Label ID="lblist" runat="server"></asp:Label>
<asp:Label ID="lblwebSize" runat="server"></asp:Label>
<asp:Label ID="lblSiteCollectionData" runat="server" CssClass="Rows" ></asp:Label>
<asp:GridView ID="spGridWebSiteUsedData" runat="server" AutoGenerateColumns="false">
<HeaderStyle CssClass="linkButton" />
<RowStyle CssClass="Rows" />
<AlternatingRowStyle CssClass="Rows1" />
<Columns>
<asp:TemplateField >
<HeaderTemplate >
<asp:Label ID="lblWebSiteName" Text="Web Site Name" runat="server" />
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="lblSebSite"
Text='<%# Eval("Web Name") %>' runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField >
<HeaderTemplate >
<asp:Label ID="lblWebSiteUsedData" Text="Web Site Name" runat="server" />
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="lblUsedData"
Text='<%# Eval("Used Data") %>' runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField >
<HeaderTemplate >
<asp:Label ID="lblWebSiteData" Text="Web Site Size" runat="server" />
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="lblUsedDatasize"
Text='<%# Eval("WebSize") %>' runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<br />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
<HeaderStyle CssClass="linkButton" />
<RowStyle CssClass="Rows" />
<AlternatingRowStyle CssClass="Rows1" />
<Columns>
<asp:TemplateField >
<HeaderTemplate >
<asp:Label ID="lblListName" Text="ListName" runat="server" />
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="lblListNames"
Text='<%# Eval("tp_Title") %>' runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField >
<HeaderTemplate >
<asp:Label ID="lblItemsSize" Text="ItemsSize" runat="server" />
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="lblItemsSizes"
Text='<%# Eval("tp_ItemCount") %>' runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField >
<HeaderTemplate >
<asp:Label ID="lblItemCount" Text="ListItemsCount" runat="server" />
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="lblItemCount"
Text='<%# Eval("TotalSize") %>' runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<br />
<!-- ListReport-->
<asp:Label ID="listTotalSize" runat="server"></asp:Label>
<asp:GridView ID="gvListReport" runat="server" AutoGenerateColumns="false">
<HeaderStyle CssClass="linkButton" />
<RowStyle CssClass="Rows" />
<AlternatingRowStyle CssClass="Rows1" />
<Columns>
<asp:TemplateField >
<HeaderTemplate >
<asp:Label ID="lblhlistName" Text="ListName" runat="server" />
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="lblListNameName"
Text='<%# Eval("ListNameName") %>' runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField >
<HeaderTemplate >
<asp:Label ID="lblhListSize" Text="ListSizee" runat="server" />
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="lblSize"
Text='<%# Eval("Size") %>' runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField >
<HeaderTemplate >
<asp:Label ID="lblhItemscount" Text="Itemscount" runat="server" />
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="lblItemsCount"
Text='<%# Eval("ItemsCount") %>' runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField >
<HeaderTemplate >
<asp:Label ID="lblhListType" Text="ListType" runat="server" />
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="lblListType"
Text='<%# Eval("ListType") %>' runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField >
<HeaderTemplate >
<asp:Label ID="lblhWebUrl" Text="WebUrl" runat="server" />
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="lblWebUrl"
Text='<%# Eval("WebUrl") %>' runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
.cs
public DataTable table1
{
get { return (DataTable)ViewState["Table1"]; }
set
{
ViewState["Table1"] = value;
}
}
public DataTable table
{
get { return (DataTable)ViewState["Table"]; }
set
{
ViewState["Table"] = value;
}
}
public DataTable ListReporttable
{
get { return (DataTable)ViewState["ListReporttable"]; }
set
{
ViewState["ListReporttable"] = value;
}
}
protected void Page_Load(object sender, EventArgs e)
{
long webUsedData = 0;
double totalData = 0;
SPSite site = SPContext.Current.Site;
ListReporttable = CreateListReportTable();
String title = site.OpenWeb().Title;
table= CreateTable();
string webId=string.Empty;
using (SPSite oSite = new SPSite(site.ID))
{
foreach (SPWeb oWeb in oSite.AllWebs)
{
webId=Convert.ToString(oWeb.ID);
table1 = null;
#region Newcode
// string SizeWithUnitMeasure;
string withUnitMeasure;
double webSizeInBytes = GetWebSizeWithUnitMeasure(oWeb, out withUnitMeasure);
lblwebSize.Text = webSizeInBytes.ToString("0.##");
// string listSizeWithMeasure;
//double listSizeInBytes = GetListSizeWithUnit(list, out listSizeWithMeasure);
//lblist.Text = Convert.ToString(listSizeInBytes);
//Use the listSizeWithMeasureto print with the measure
//Use the SizeWithUnitMeasure to print with the measure.
#endregion
webUsedData = GetWebSize(oWeb);
Double usedData = webUsedData;
usedData = Convert.ToDouble((usedData / (1024 * 1024)).ToString("0.##"));
DataRow row1;
if(table1!=null)
row1 = table1.NewRow();
DataRow row = table.NewRow();
row["Web Name"] = oWeb.Title;
row["Used Data"] = Convert.ToString(usedData + " MB ");
row["WebSize"] = webSizeInBytes.ToString("0.##") + "MB";
table.Rows.Add(row);
totalData += usedData;
oWeb.Dispose();
}
lblSiteCollectionData.Text = "Total Data used by " + title + " Site collection is: " + Convert.ToString(totalData) + " MB ";
}
DataTable newTable = new DataView(table1, "tp_WebID = '" + webId + "'", "", DataViewRowState.CurrentRows).ToTable();
GridView1.DataSource = newTable;
GridView1.DataBind();
spGridWebSiteUsedData.DataSource = table;
spGridWebSiteUsedData.DataBind();
// DataRow[] dr = ListReporttable.Select("SUM(Size)");
listTotalSize.Text =Convert.ToString(ListReporttable.Compute("Sum(Size)", ""));
// listTotalSize.Text = ListReporttable.AsEnumerable().Sum(x => x.Field<Double>("Size")).ToString();
gvListReport.DataSource = ListReporttable;
gvListReport.DataBind();
}
private long GetWebSize(SPWeb web)
{
long total = 0;
foreach (SPFolder folder in web.Folders)
{
total += GetFolderSize(folder);
}
foreach (SPWeb subweb in web.Webs)
{
total += GetWebSize(subweb);
subweb.Dispose();
}
foreach (SPFile subweb in web.Files)
{
total += subweb.Length;
}
return total;
}
private long GetFolderSize(SPFolder folder)
{
long folderSize = 0;
foreach (SPFile file in folder.Files)
{
folderSize += file.Length;
}
foreach (SPFolder subfolder in folder.SubFolders)
{
folderSize += GetFolderSize(subfolder);
}
return folderSize;
}
private DataTable CreateTable()
{
DataTable newTable = new DataTable();
DataColumn col1 = new DataColumn("Web Name", typeof(String));
DataColumn col2 = new DataColumn("Used Data", typeof(String));
DataColumn col3 = new DataColumn("WebSize", typeof(String));
newTable.Columns.Add(col1);
newTable.Columns.Add(col2);
newTable.Columns.Add(col3);
return newTable;
}
private DataTable CreateListReportTable()
{
DataTable newTable = new DataTable();
DataColumn col1 = new DataColumn("ListNameName", typeof(String));
DataColumn col2 = new DataColumn("Size", typeof(Double));
DataColumn col3 = new DataColumn("ItemsCount", typeof(String));
DataColumn col4 = new DataColumn("ListType", typeof(String));
DataColumn col5 = new DataColumn("WebUrl", typeof(String));
newTable.Columns.Add(col1);
newTable.Columns.Add(col2);
newTable.Columns.Add(col3);
newTable.Columns.Add(col4);
newTable.Columns.Add(col5);
return newTable;
}
#region Newcode2
public double DefineSizeWithUnitMeasure(double sizeInBytes, out string unitMeasure)
{
unitMeasure = "Bytes";
double size = sizeInBytes;
if (size > 1024)
{
size = sizeInBytes / 1024d;//KB
unitMeasure = "KB";
}
if (size > 1024)
{
size = size / 1024d;//MB
unitMeasure = "MB";
}
if (size > 1024)
{
size = size / 1024d; //GB
unitMeasure = "GB";
}
if (size > 1024)
{
size = size / 1024d; //TB
unitMeasure = "TB";
}
return size;
}
public double GetWebSizeWithUnitMeasure(SPWeb web, out string withUnitMeasure)
{
double storageUsage = 0d;
double listData = 0d;
double total = 0d;
foreach (SPList list in web.Lists)
{
listData = (double)GetListSizeInBytes(list)/(1024*1024);
storageUsage += listData;
DataRow row = ListReporttable.NewRow();
row["ListNameName"] = list.Title;
row["Size"] = listData;
row["ListType"] = list.BaseType.ToString();
row["ItemsCount"] = Convert.ToString(list.ItemCount);
row["WebUrl"] = list.ParentWebUrl;
ListReporttable.Rows.Add(row);
}
string unitMeasure = "";
double webSize = storageUsage * 1024.0 * 1024.0;// DefineSizeWithUnitMeasure(storageUsage * 1024.0 * 1024.0, out unitMeasure);
withUnitMeasure = string.Format("{0} {1}", webSize.ToString("f"), unitMeasure);
foreach (SPWeb subweb in web.Webs)
{
String t;
storageUsage += GetWebSizeWithUnitMeasure(subweb, out t);
// storageUsage += total;
}
//DataRow row = table.NewRow();
//row["Web Name"] = web.Title;
//row["Used Data"] = Convert.ToString(storageUsage + " MBL ");
//row["WebSize"] = withUnitMeasure;
//table.Rows.Add(row);
return storageUsage;
}
public double GetListSizeWithUnit(SPList list, out string withUnitMeasure)
{
double listSizeinBytes = (double)GetListSizeInBytes(list);
string unitMeasure = "";
double listSize = DefineSizeWithUnitMeasure(listSizeinBytes, out unitMeasure);
withUnitMeasure = string.Format("{0} {1}", listSize.ToString("f"), unitMeasure);
return listSizeinBytes;
}
public long GetListSizeInBytes(SPList list)
{
long listSize = 0;
string filter = string.Format("tp_id='{0}'", list.ID);
DataTable myDataTable = GetCachedSiteCollectionListSizes(list.ParentWeb.Site);
if(table1!=null)
table1.Merge(myDataTable);
else
table1 = myDataTable;
DataRow[] dataRows = myDataTable.Select(filter);
if (dataRows.Length > 0)
{
listSize = (long)dataRows[0]["TotalSize"];
}
return listSize;
}
public DataTable m_SiteCollectionListSizes;
public Guid m_SiteCollectionListSizesSiteID;
private DataTable GetCachedSiteCollectionListSizes(SPSite site)
{
if (m_SiteCollectionListSizes == null || m_SiteCollectionListSizesSiteID != site.ID)
{
m_SiteCollectionListSizes = GetSiteCollectionListSizes(site);
m_SiteCollectionListSizesSiteID = site.ID;
}
return m_SiteCollectionListSizes;
}
private DataTable GetSiteCollectionListSizes(SPSite site)
{
DataTable dataTable = GetDocLibSizes(site);
//Combine both list and doc lib size results
dataTable.Merge(GetListSizes(site));
return dataTable;
}
private DataTable GetDocLibSizes(SPSite site)
{
string connectionString = site.WebApplication.ContentDatabases[site.ContentDatabase.Id].DatabaseConnectionString;
string storedProcName = "proc_GetDocLibrarySizes";
System.Data.SqlClient.SqlConnection connection = null;
System.Data.SqlClient.SqlDataReader reader = null;
DataTable dataTable = null;
try
{
connection = new System.Data.SqlClient.SqlConnection(connectionString);
connection.Open();
System.Data.SqlClient.SqlCommand command = new System.Data.SqlClient.SqlCommand(storedProcName, connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new System.Data.SqlClient.SqlParameter("@SiteId", site.ID.ToString()));
reader = command.ExecuteReader();
dataTable = new DataTable();
dataTable.Load(reader);
}
finally
{
if (reader != null)
reader.Close();
if (connection != null)
connection.Close();
}
return dataTable;
}
private DataTable GetListSizes(SPSite site)
{
string connectionString = site.WebApplication.ContentDatabases[site.ContentDatabase.Id].DatabaseConnectionString;
string storedProcName = "proc_GetListSizes";
System.Data.SqlClient.SqlConnection connection = null;
System.Data.SqlClient.SqlDataReader reader = null;
DataTable dataTable = null;
try
{
connection = new System.Data.SqlClient.SqlConnection(connectionString);
connection.Open();
System.Data.SqlClient.SqlCommand command = new System.Data.SqlClient.SqlCommand(storedProcName, connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new System.Data.SqlClient.SqlParameter("@SiteId", site.ID.ToString()));
reader = command.ExecuteReader();
dataTable = new DataTable();
dataTable.Load(reader);
}
finally
{
if (reader != null)
reader.Close();
if (connection != null)
connection.Close();
}
return dataTable;
}
#endregion
No comments:
Post a Comment