This is a migrated thread and some comments may be shown as answers.

PDF export quirk and customization

68 Answers 459 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Alexander
Top achievements
Rank 1
Alexander asked on 14 Dec 2010, 04:32 PM
Hi, I use client-side binding and export to PDF works strange:

below normal data-filled rows it shows a row with "No data" text.

Where is that from? Could it have something to do with custom paging?

Also, on page load, before the data is received from webservice, the grid shows tons of empty rows.
I've seen somewhere on forum I should put [e.Item.Display = 'none'] to fix this. Is there a better approach? As i understand, this just hides these rows vis display: none, but markup anyway is huge!

And more questions about PDF customization: why
this.MasterTableView.ItemStyle.BorderStyle
assigning in PDF export event does not work? I want to remove this ugly double border around some cells in PDF and remain single border only around data cells.
Is there a way to acquire somehow CSS class data in ItemCreated event and 'transform' them into inline style to preserve grid outlook?

68 Answers, 1 is accepted

Sort by
0
Bruno
Top achievements
Rank 2
answered on 14 Dec 2010, 05:49 PM
Alex, how did you manage to export radgrid with client-side binding? As far as I know this is not possible.
To the second question - only the inline styles will be exported. Personally, I use the ItemCreated event to customize the item look. I pass a reference to the item to an external method that formats the cells automatically according to a predefined pattern that corresponds to the current style (skin).
0
Alexander
Top achievements
Rank 1
answered on 14 Dec 2010, 07:03 PM
All-in-all, i've beaten some problems, but I cannot make spacing work: neither with
radGrid.MasterTableView.CellSpacing

nor with 
cell.Style.Add("margin""2px !important");

ANd well - what about "No data" row?? What is that? I still cannot get rid of it! 
0
Bruno
Top achievements
Rank 2
answered on 14 Dec 2010, 11:00 PM
Do you have ClientDeleteColumn?
0
Alexander
Top achievements
Rank 1
answered on 15 Dec 2010, 09:01 AM
No, I don't
0
Daniel
Telerik team
answered on 15 Dec 2010, 09:13 AM
Hello Alexander,

Could you please post your markup in this thread? I suggest that you use the "Format Code Block" tool from the toolbox above.

Regards,
Daniel
the Telerik team
Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal.
0
Alexander
Top achievements
Rank 1
answered on 15 Dec 2010, 10:45 AM
Here is :
protected void ExportToPdfClick(object sender, EventArgs e)
{
    currentlyExportingType = DSExportType.Pdf;
    ColumnsForExportManaged = false;
    if (DataExport != null)
    {
        DataExport.Invoke();
    }
    this.ExportSettings.OpenInNewWindow = true;
    this.BorderStyle = BorderStyle.None;
    this.MasterTableView.BorderStyle = BorderStyle.None;
    this.MasterTableView.Style["border-collapse"] = "collapse";
 
    this.MasterTableView.UseAllDataFields = true;
    this.MasterTableView.AllowSorting = false;
    this.Rebind();
    this.MasterTableView.ExportToPdf();
    currentlyExportingType = null;
}
Also (a propos, text-transform is also ignored and not applied to headers!):
protected override void OnItemCreated(GridItemEventArgs e)
{
    if (e.Item is GridCommandItem)
    {
        var item = e.Item as GridCommandItem;
        if (IsExport)
        {
            item.Font.Name = "Arial";
            item.Font.Bold = true;
            item.ForeColor = Color.Black;
        }
    }
    if (e.Item is GridHeaderItem)
    {
        if (IsExport)
        {
            var item = e.Item as GridHeaderItem;
            item.Font.Name = "Arial";
            item.Style["background-color"] = "#B5B5B5";
            item.Style["color"] = "#000000";
            foreach (TableCell cell in item.Cells)
            {
                cell.Style["text-transform"] = "uppercase";
                cell.Style["margin"] = "2px";
                cell.Style["text-align"] = "left";
                cell.Style["border-style"] = "1 px solid #FFFFFF";
            }
        }
    }
    if (e.Item is GridDataItem)
    {
        var item = e.Item as GridDataItem;
        if (IsExport)
        {
            item.Style.Clear();
            item.Font.Name = "Arial";
            item.Style["background-color"] = (item.ItemType == GridItemType.AlternatingItem ? "#F3F3F3" : "#E2E2E2");
            item.Style["color"] = "#000000";
            foreach (TableCell cell in item.Cells)
            {
                cell.Style["margin"] = "2px";
                cell.Style["text-align"] = "left";
                cell.Style["border-style"] = "1 px solid #FFFFFF";
            }
        }
    }
As to weirdness with "No data" row... I don't know what to post... There is a lot of code, but it's a usual calling WCF service, proper data is returned, record count is proper. However, below correct row data this "No data" is shown from somewhere... :(

Maybe instead you could give me a hint, what could it be and what to check?

And, by the way, why all these empty rows on initial grid load appears?
0
Daniel
Telerik team
answered on 20 Dec 2010, 10:23 PM
Hello Alexander,

Regarding the first question - you can use padding instead of margin:
foreach (TableCell cell in item.Cells)
{
    cell.Style["padding"] = "20px";
    cell.Style["text-align"] = "left";
    cell.Style["border-style"] = "1 px solid #FFFFFF";
}

As to the "No data" issue - could you please share your markup with us? This problem is probably related to your columns (there is known issue related to the GridClientDeleteColumn - as suggested by Bruno).

Regards,
Daniel
the Telerik team
Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal.
0
Alexander
Top achievements
Rank 1
answered on 24 Dec 2010, 09:14 PM
Hi, I will do this later, but currently I have another, more important problem with this page.

SO, I have ItemTemplate with some 'data field' labels inside. If corresponding data field is marked with Export attribute, when currently exporting format is not present - label is not shown.
Here is the class for my grid:
[KnownType(typeof(GridInfo))]
public class Distributor
{
    [DataContract]
    [Serializable]
    public class GridInfo
    {
        [DataMember(Name = "ID", IsRequired = false, Order = 0)]
        public int? ID { get; set; }
 
        [Export(DSExportType.Pdf, DSExportType.Excel)]
        [DataMember(Name = "Name", IsRequired = false, Order = 1)]
        public string Name { get; set; }
 
        [DataMember(Name = "JsUrlName", IsRequired = false, Order = 2)]
        public string JsUrlName { get; set; }
 
        [Export(DSExportType.Excel)]
        [DataMember(Name = "ContactEmail", IsRequired = false, Order = 3)]
        public string ContactEmail { get; set; }
    }
 
    public class GridData
    {
        public List<GridInfo> Data { get; set; }
        public int Count { get; set; }
    }
}


AND - attention... :) - when there are NO visible labels in the corresponding column, I want to HIDE this column! I.e. ContactEmail column should not be visible when exporting to PDF. But I don't want to bother with some predefined uniquename (or datafield) attributes in EACH (i will have tons of them) grid! They should be generated automatically and 'unify' the column and the labels inside!

<B4Restore:DSGridView ID="dsgridDistributorView" runat="server" AutoGenerateColumns="False"
    SkinID="dsGridView" AllowPaging="true" AllowSorting="true" ExportEnabledFormats="pdf,excel"
    MasterTableViewCaption="Distributor List" MasterTableViewCssClass="bold" ProgressPanelID="ralp"
    DataBindingMethod="GetDistributorDataAndCount" DataBindingService="GridViewService" FilterGroup="Distributor">
    <MasterTableView VirtualItemCount="1000000" CommandItemDisplay="Top">
        <CommandItemTemplate>
            <B4Restore:FilterBar runat="server" />
            <B4Restore:HeaderBar runat="server" />
        </CommandItemTemplate>
        <Columns>
            <telerik:GridTemplateColumn HeaderStyle-CssClass="GridHeaderGreen la" ItemStyle-CssClass="la" HeaderText="Name" SortExpression="DSWIZARD.COMPANY.NAME">
                <ItemTemplate>
                    <asp:Label runat="server" ID="Name" />
                    <asp:Label runat="server" ID="JsUrlName" />
                </ItemTemplate>
            </telerik:GridTemplateColumn>
            <telerik:GridTemplateColumn HeaderStyle-CssClass="GridHeaderGreen la" ItemStyle-CssClass="la" HeaderText="Email" SortExpression="DSWIZARD.CONTACT.EMAIL">
                <ItemTemplate>
                    <asp:Label runat="server" ID="ContactEmail" />
                </ItemTemplate>
            </telerik:GridTemplateColumn>
        </Columns>
    </MasterTableView>
</B4Restore:DSGridView>



How to do this without assigning some UniqueNames everywhere in the grid columns? I want a GENERAL solution ;)
protected override void OnColumnCreated(GridColumnCreatedEventArgs e)
{
    var dataColumn = e.Column as GridTemplateColumn;
    if (dataColumn != null)
    {
        var columnUniqueName = string.Format("{0}_Column_{1:dd}", e.Column.OwnerGridID, e.Column.OrderIndex);
        dataColumn.UniqueName = columnUniqueName;
        // GOOD, but I have no access to my labels here! :(
    }
}
protected override void OnItemDataBound(GridItemEventArgs e)
        {
            if (!IsExport)
            {
                return;
            }
            if (e.Item is GridDataItem)
            {
                var item = e.Item as GridDataItem;
                if (item.DataItem == null || item.DataItem is DataRowView)
                {
                    return;
                }
                // if our data fields in the grid have Export attribute (see GridEntity.cs) - check if they should be shown (export type of the field contains currently exporting type)
                foreach (TableCell cell in item.Cells)
                {
                    var labels = cell.Controls.OfType<WebControl>().OfType<Label>();
                    foreach (var label in labels)
                    {
                        var property = item.DataItem.GetType().GetProperty(label.ID);
                        if (property != null)
                        {
                            var exportAttribute = ((MemberInfo)property).GetCustomAttributes(true).Where(attributeInstance => attributeInstance is ExportAttribute).FirstOrDefault();
                            if (exportAttribute != null && !((ExportAttribute)exportAttribute).ExportTypes.Contains(currentlyExportingType.Value))
                            {
                                label.Visible = false;
                            }
                            if (label.Visible)
                            {
                                label.Text = DataBinder.Eval(item.DataItem, label.ID).ToString();
                            }
                        }
                    }
                    //Great, but I can't access related column here :( I don't have UNIQUENAME!
                    [CURRENT COLUMN].Visible = (from label in labels where label.Visible select label).Count() > 0;
                }
            }
        }

The idea was to assign the same uniquename (as custom webcontrol attribute) to all labels that 'belongs' to the specific column and then check this attribute in ItemDataBound event, but how to do this?
0
Daniel
Telerik team
answered on 30 Dec 2010, 10:04 AM
Hello Alexander,

Please test the attached project at your side. It demonstrates how to hide the columns in a similar scenario.

Regards,
Daniel
the Telerik team
Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal.
0
Alexander
Top achievements
Rank 1
answered on 24 Jan 2011, 11:50 AM
Hi. Thanks. This approach is ok. However, new error appears when column is made invisible:

Grid Export to PDF error Telerik.Web.Apoc.Render.Pdf.Fonts.Type2CIDSubsetFont.get_WArray()

I can see people here already had such problem. I discovered, that when I comment following lines - problem goes away. However, I would like to preserve these styles:

					//item.Font.Name = "Arial";
//item.Font.Bold = true;
So, what is wrong?

And please - advice me something about 'No data' text in PDF and Excel files! The markup of my grid is already shown - as you can see, there is no any especial there. No any extra-columns.
0
Daniel
Telerik team
answered on 26 Jan 2011, 10:20 PM
Hello Alexander,

Could you please try with another font? (for example Verdana or Garamond)

As to the "No data" problem. This problem will be addressed in the next official version of RadControls for ASP.NET AJAX.

Kind regards,
Daniel
the Telerik team
Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal.
0
Alexander
Top achievements
Rank 1
answered on 31 Jan 2011, 03:50 PM
Hi, I've tried with another fonts, but error is the same. Could you please also fix this issue in next build?

Btw, now I've discovered weird bug! So, I have client-side binding and webmethod returns 4 records. But in the grid 4th record is absent! Here is HTML, copied via Firebug:

<tr class="rgRow" id="ctl00_ctl00_cphMain_cphMain_masterDistributorView_dsgridDistributorView_ctl00__0" style="display: table-row;">
    <td class="la">
                <span id="ctl00_ctl00_cphMain_cphMain_masterDistributorView_dsgridDistributorView_ctl00_ctl04_Name">MASTER Software</span>
                <span id="ctl00_ctl00_cphMain_cphMain_masterDistributorView_dsgridDistributorView_ctl00_ctl04_ContactEmail">master@b4restore.com</span>
            </td>
</tr><tr class="rgAltRow" id="ctl00_ctl00_cphMain_cphMain_masterDistributorView_dsgridDistributorView_ctl00__1" style="display: table-row;">
    <td class="la">
                <span id="ctl00_ctl00_cphMain_cphMain_masterDistributorView_dsgridDistributorView_ctl00_ctl06_Name">DISTRIBUTOR Software</span>
                <span id="ctl00_ctl00_cphMain_cphMain_masterDistributorView_dsgridDistributorView_ctl00_ctl06_ContactEmail">distributor@b4restore.com</span>
            </td>
</tr><tr class="rgRow" id="ctl00_ctl00_cphMain_cphMain_masterDistributorView_dsgridDistributorView_ctl00__2" style="display: table-row;">
    <td class="la">
                <span id="ctl00_ctl00_cphMain_cphMain_masterDistributorView_dsgridDistributorView_ctl00_ctl08_Name">PARTNER Software</span>
                <span id="ctl00_ctl00_cphMain_cphMain_masterDistributorView_dsgridDistributorView_ctl00_ctl08_ContactEmail">partner@b4restore.com</span>
            </td>
</tr><tr class="rgNoRecords" style="display:none;">
    <td colspan="1" style="text-align:left;"><div>No data</div></td>
</tr>
<tr class="rgAltRow" id="ctl00_ctl00_cphMain_cphMain_masterDistributorView_dsgridDistributorView_ctl00__3"><td></td></tr>

As you can see, there is also 'No data' intruder! That might be the reason of 'No data' row in exported PDF???

Ok, and now is corresponding dataItem output via Sys.Debug.traceDump. As you can see, there are 4 records, not 3!

traceDump {Object}
    __type: Distributor.GridInfo:#DebriefingSoftware.Web.PresentationObjects
    ID: 1
    Name: MASTER Software
    JsUrlName: null
    ContactEmail: master@b4restore.com
 
 
 
 
traceDump {Object}
    __type: Distributor.GridInfo:#DebriefingSoftware.Web.PresentationObjects
    ID: 3
    Name: DISTRIBUTOR Software
    JsUrlName: null
    ContactEmail: distributor@b4restore.com
 
 
 
 
traceDump {Object}
    __type: Distributor.GridInfo:#DebriefingSoftware.Web.PresentationObjects
    ID: 4
    Name: PARTNER Software
    JsUrlName: null
    ContactEmail: partner@b4restore.com
 
 
 
 
traceDump {Object}
    __type: Distributor.GridInfo:#DebriefingSoftware.Web.PresentationObjects
    ID: 5
    Name: CLIENT Software
    JsUrlName: null
    ContactEmail: client@b4restore.com
0
Daniel
Telerik team
answered on 03 Feb 2011, 01:47 PM
Hello Alexander,

The "No data" issue is already addressed by our developers.

Which version of RadControls for ASP.NET AJAX is used in your project? Also, could you please post a list of the fonts that cause exceptions?

As to the client-side databinding issue - it is hard to guess what is the root cause for this problem. Please submit a support ticket with a runnable demo attached and I will debug it locally.

Kind regards,
Daniel
the Telerik team
Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal.
0
Alexander
Top achievements
Rank 1
answered on 03 Feb 2011, 10:35 PM
Greetings, version is
2010.2.826.40
I know it may be not the latest, but sometimes we meet incompatibilities when running newer version, so we are not in a hurry to replace the version when it appears... :)
Concerning fonts. These are Arial, Garamond and Verdana I've tried.

I will send support ticket, maybe guys will find the reason of problem with fonts - maybe i'm doing something wrong - or other stuff, i am doing incorrect related to client-side binding. Because it's really quite advanced version of that simple sample, i've seen on your site ;)

add-on: today i've tested the grid and see weird thing:
first of all, I have a special user setting: page size for the grid. On initial load, in server side code, grid.PageSize and grid.MasterTableView.PageSize are assigned this number. Then i call web method for filling the grid, do client-side databinding (dataBind()) and other staff. Also, i set PageSize and CurrentPageIndex in my pager when I change page size or move across the pages with arrow buttons.
However, actually
tableView.get_pageCount()
returns incorrect value! It gives me INITIAL page count, not page count of REAL current state of the grid! However, I cannot see client-side setters for page count and no anything for record count. So, I suppose, this should be refreshed manually, when I do dataBind(), but this does not happen on client side...
0
Daniel
Telerik team
answered on 09 Feb 2011, 02:33 PM
Hello Alexander,

About the PDF issue: The provided information is sufficient. There is no need to submit a support ticket at this point. I will keep you posted.

As to the client-side issue: The page count is automatically calculated according to the page size and the item count (virtualItemCount)

Kind regards,
Daniel
the Telerik team
Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal.
0
Alexander
Top achievements
Rank 1
answered on 09 Feb 2011, 04:35 PM
Daniel,

ok, i've added the line for setting virtual item count:

tableView.set_dataSource(result.Data); // was before
tableView.set_virtualItemCount(result.Count); // added now

but nothing changed: page count is still incorrect... :(
0
Daniel
Telerik team
answered on 14 Feb 2011, 04:07 PM
Hello Alexander,

You can use the following links as a starting point:
Programmatic Binding demo
Client-side binding

I hope this helps.

Best regards,
Daniel
the Telerik team
Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal.
0
Alexander
Top achievements
Rank 1
answered on 23 Feb 2011, 09:40 AM
Hi, Daniel.

I've already read all these tutorials before :)
Btw, I don't use PageMethods, I use Sys.Net.WebServiceProxy.invoke. And I have everything working properly, except this pager thing...

add-on:

i've added this into _Succeeded method:
tableView.RecordCount = result.Count;

and this into SelectedIndexChanged method:
tableView.set_virtualItemCount(tableView.RecordCount);

So, I've added new property to tableView (strange, there is no record count property in tableView) and now it seems to work...
But I am still not sure everything is FULLY correct...
0
Alexander
Top achievements
Rank 1
answered on 24 Mar 2011, 03:39 AM
Hi,

i have additional quirks when trying to do PDF export.

1) text in some columns overflows cell limits (to the right) - and after all, it looks like for some reason the same width is automatically assigned to all columns
2) can't manage command item template content (I have a header text for the grid there) look properly: it occupies some very small width and then wraps! I tried to set style white-space: none, also tried to indicate 100%-width, but latter caused exception...

How to fix these?
0
Daniel
Telerik team
answered on 28 Mar 2011, 09:54 PM
Hello Alexander,

1) Cell contents will overflow when you have long text without whitespace characters inside.
PDF export help topic

2) You have to call PrepareItemStyle method for this item as demonstrated in the online demo:
protected void RadGrid1_ItemCreated(object sender, GridItemEventArgs e)
{
    if (e.Item is GridCommandItem)
    {
        e.Item.PrepareItemStyle(); //needed to span the image over the CommandItem cells
    }
}

Export to PDF

Regards,
Daniel
the Telerik team
0
Alexander
Top achievements
Rank 1
answered on 01 Apr 2011, 09:10 AM
Thank you, second bug is fixed, but as to first one...
Well, yes, I do have text with no space - long names. But I cannot predict, how many symbols it will include in every given case. It depends on what entity is bound to that grid, etc. I want some common logic. I tried the following code, but it did not work:
protected override void OnItemDataBound(GridItemEventArgs e)
{
    base.OnItemDataBound(e);
 
    if (IsExport)
    {
        if (e.Item is GridDataItem)
        {
            var item = e.Item as GridDataItem;
            if (item.DataItem == null || item.DataItem is DataRowView)
            {
                return;
            }
            foreach (TableCell cell in item.Cells)
            {
                cell.ControlStyle.Width = Unit.Pixel(cell.Text.Length * 10);
            }
            item.PrepareItemStyle();
        }
    }
}
0
Daniel
Telerik team
answered on 06 Apr 2011, 10:19 PM
Hello Alexander,

I'm afraid it would be almost impossible to calculate the length of the string except if you use monospaced-type font (fixed pitch) like Courier New, Courier, Consolas, Lucida Console, Monaco, Terminal, etc.

Best regards,
Daniel
the Telerik team
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
0
Alexander
Top achievements
Rank 1
answered on 08 Apr 2011, 02:31 PM
Ok, at least i would like to put approximate length.

Variant with fixed width is unacceptable: i have dozens of columns and dozens of entities and I never know what width should be!

So what do you offer? I would like to estimate width based on the actual text data, like in my example, but it could be not a text only, but href or something, when not whole innerHTML should be taken into account, but only displayed text.
0
Jesper Matthiesen
Top achievements
Rank 1
answered on 08 Apr 2011, 06:15 PM
In general, i've solved the problem. Here is the code:

if (IsExport)
{
    const int charWidth = 10;
    var innerTextPattern = new Regex("\\>(.+)\\<\\/");
 
    foreach (GridColumn column in MasterTableView.Columns)
    {
        if (column is GridEditableColumn)
        {
            var columnWidth = 0;
            var currentlyExportingTypes = column.CurrentFilterValue.GetTypesFromSeparatedString<DSExportType>();
 
            if (currentlyExportingTypes.Count > 0 && !currentlyExportingTypes.Contains(_currentlyExportingType.Value) || column.HeaderText == "#")
            {
                column.Visible = false;
            }
 
            if (column.Visible)
            {
                foreach (GridDataItem dataItem in MasterTableView.Items)
                {
                    var labelLengths = 0;
                    if (column is GridTemplateColumn)
                    {
                        var labelTexts = (from label in dataItem[column.UniqueName].Controls.OfType<WebControl>().OfType<Label>() select label.Text);
                        foreach (var labelText in labelTexts)
                        {
                            var innerTextPatternMatches = innerTextPattern.Matches(labelText);
                            if (innerTextPatternMatches.Count > 0)
                            {
                                labelLengths += (from Match innerTextPatternMatch in innerTextPatternMatches
                                                 where innerTextPatternMatch.Success
                                                 select innerTextPatternMatch.Groups[1].Value
                                                 into innerText select innerText.Length).Sum();
                            }
                            else
                            {
                                labelLengths += labelText.Length;
                            }
                        }
                    }
                    else
                    {
                        var innerTextPatternMatches = innerTextPattern.Matches(dataItem[column.UniqueName].Text);
                        if (innerTextPatternMatches.Count > 0)
                        {
                            labelLengths += (from Match innerTextPatternMatch in innerTextPatternMatches
                                             where innerTextPatternMatch.Success
                                             select innerTextPatternMatch.Groups[1].Value
                                             into innerText select innerText.Length).Sum();
                        }
                        else
                        {
                            labelLengths = dataItem[column.UniqueName].Text.Length;
                        }
                    }
                    var currentColumnWidth = labelLengths * charWidth;
                    if (columnWidth < currentColumnWidth)
                    {
                        columnWidth = currentColumnWidth;
                    }
                }
                column.HeaderStyle.Width = Unit.Pixel(columnWidth);
            }
        }
    }
    _currentlyExportingType = null;
}

Btw, have you solved the problem with cookieless session when exporting in your latest release? This, may i have images preserved when exporting cookieless session page grid data into PDF? I cannot turn session off for this page, because i get data from session
0
Alexander
Top achievements
Rank 1
answered on 09 Apr 2011, 10:15 PM
Small correction

column.HeaderStyle.Width = Unit.Pixel(Math.Max(columnWidth, column.HeaderText.Length * charWidth))
0
Daniel
Telerik team
answered on 10 Apr 2011, 06:46 PM
Hello Jesper,

Thank you for sharing your code with our community. You could make a simple test project and submit it as a code-library.
Using the Code Library
Code Library

As to your question - the cookieless-related problem is already fixed. Let me know if you experience any issues when exporting images in cookieless mode.

Regards,
Daniel
the Telerik team
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
0
Alexander
Top achievements
Rank 1
answered on 13 Apr 2011, 11:51 PM
I hoped, that problem with images have been fixed in latest version, but alas...
I have the same problem as here

Why is that? When will be next release, fixing that?
0
Daniel
Telerik team
answered on 18 Apr 2011, 11:45 AM
Hello Alexander,

This issue was fixed in Q1 2011 SP1 (released on Apr 13, 2011). If you still experience problems in this scenario, please isolate the problem in a sample project. This way we will be able to investigate the cause locally.
Isolating a problem in a sample project

Regards,
Daniel
the Telerik team

Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal.

0
Alexander
Top achievements
Rank 1
answered on 29 Apr 2011, 06:07 PM
Hi, I do use latest version, but the problem remains.

Maybe i'm doing wrong something? I use client-side binding and one of columns is bound to the following property:

[DataMember]
public string MappedVdisksCountImg
{
    get
    {
        if (MappedVdisksCount.HasValue && MappedVdisksCount.Value > 0)
        {
            return "<img src='" + HttpContext.Current.GetWebRoot() + "/images/bullet_ball_green.png' />";
        }
 
        return "<img src='" + HttpContext.Current.GetWebRoot() + "/images/bullet_ball_red.png' />";
    }
    set { }
}

Markup is ok, image is displayed:
<td class="ca">
                    <span id="ctl00_cphMain_tc1_ctl00_ca1_ctl00_svc2HostView_gridClient_ctl00_ctl04_MappedVdisksCountImg"><img src="https://localhost/Client.TSM-SVC/images/bullet_ball_green.png"></span>
                </td>


But the error is following when I press my export button:
System.SystemException: Error while creating area : Encountered web exception while fetching image from file:///C:/TFS/WizardsFramework/Main/Source/B4Restore.Web.Client.TSM-SVC/Pages/SVC2/https://localhost/Client.TSM-SVC/images/bullet_ball_green.png: The given path's format is not supported.


0
Daniel
Telerik team
answered on 05 May 2011, 12:25 AM
Hello Alexander,

Try to set the same file path on a server Image control and let me know what happens.

Best regards,
Daniel
the Telerik team

Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal.

0
Alexander
Top achievements
Rank 1
answered on 05 May 2011, 08:05 AM
Hi,
i'd like to try, but how do you suggest me to use server control here?

I've tried the following:
[DataMember]
public string MappedVdisksCountImg
{
    get
    {
        var sb = new StringBuilder();
        var tw = new StringWriter(sb);
        var hw = new HtmlTextWriter(tw);
        var img = new Image();
 
        if (MappedVdisksCount.HasValue && MappedVdisksCount.Value > 0)
        {
            img.ImageUrl = "~/images/bullet_ball_green.png";
        }
        else
        {
            img.ImageUrl = "~/images/bullet_ball_red.png";
        }
 
        img.RenderControl(hw);
 
        return sb.ToString();
    }
    set { }
}


and image is displayed, but when I try to do export, i am getting the error:
Unable to serialize the session state


0
Daniel
Telerik team
answered on 10 May 2011, 09:59 PM
Hello Alexander,

I don't mind if you try this in another project. The important thing is to test the same URL on a server Image control. I'm trying to guess what is the root cause for the problem.

Regards,
Daniel
the Telerik team

Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal.

0
Alexander
Top achievements
Rank 1
answered on 12 May 2011, 01:39 PM
I feel that calculation of path is incorrect anyway. I've tried the following:
<ItemTemplate><asp:Image runat="server" ImageUrl="~/images/bullet_ball_green.png" /></ItemTemplate>
This is called from the page, that is situated in 'Pages' folder. As a result, the error is:
Encountered web exception while fetching image from file:///C:/TFS/WizardsFramework/Main/Source/B4Restore.Web.Client.TSM-SVC/Pages/images/bullet_ball_green.png: Could not find a part of the path 'C:\TFS\WizardsFramework\Main\Source\B4Restore.Web.Client.TSM-SVC\Pages\images\bullet_ball_green.png'
Instead, as ImageUrl supposes, the image should be searched in:
C:\TFS\WizardsFramework\Main\Source\B4Restore.Web.Client.TSM-SVC\images\bullet_ball_green.png
Of course, I could try to use absolute path and maybe it will work out, but... it's not a very good point
0
Daniel
Telerik team
answered on 17 May 2011, 09:56 PM
Hello Alexander,

I will do my best to reproduce the problem locally. Any suggestions will be appreciated.

Kind regards,
Daniel
the Telerik team

Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal.

0
Alexander
Top achievements
Rank 1
answered on 27 Jun 2011, 09:09 AM
Hi,

any news about export to PDF on cookieless session page?

I have more and more pages with image columns and would like to get rid of exceptions, that i mentioned...
0
Daniel
Telerik team
answered on 30 Jun 2011, 02:17 PM
Hello Alexander,

I'm afraid I have no luck reproducing this issue. I would appreciate it if you can provide a step-by-step instructions explaining how to recreate your scenario.

Kind regards,
Daniel
the Telerik team

Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal.

0
Alexander
Top achievements
Rank 1
answered on 01 Jul 2011, 02:20 PM
Hi, Daniel,

have you tested it using the same conditions that I have, meaning:
1) cookieless session is of course enabled in web config
2) you use relative path in server object property to show image in your client-side grid, i.e. "~/images/image.jpg"
3) the page that uses client-side grid is located inside a folder, not in root folder (Pages/Grid.aspx)

Thus, the structure of your web-site is as follows:
[images]
  image.jpg
[Pages]
  Grid.aspx

Image is displayed ok in the grid, because the path is calculated correctly (~ means root)

BUT if you make export from Grid.aspx - the path for the image is calculated incorrectly: it calculates the path relatively to the current page, i.e.
file:///[your physical path]/[your web site root folder]/Pages/images/image.jpg
instead of
file:///[your physical path]/[your web site root folder]/images/image.jpg

and thus causes exception
0
Daniel
Telerik team
answered on 06 Jul 2011, 01:12 PM
Hello Alexander,

Please download the attached project and see if my setup is correct.
I used RadControls version 2011.1.519 (.NET 4.0 version).

Regards,
Daniel
the Telerik team

Register for the Q2 2011 What's New Webinar Week. Mark your calendar for the week starting July 18th and book your seat for a walk through of all the exciting stuff we will ship with the new release!

0
Alexander
Top achievements
Rank 1
answered on 06 Jul 2011, 06:04 PM
Hi,

in our production system we used version 315 and I confirm 2 things:
1) the problem with export in version 315 appears as I described
2) the problem with export in version 519 DOES NOT appear in test project, but when I try to use it in our project - I get the following error:

System.SystemException: Error while creating area : Encountered web exception while fetching image from https://localhost/Client.TSM-SVC/images/svc2/status_white.png: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel. at Telerik.Web.Apoc.ApocDriver.FireApocError(String message) at Telerik.Web.Apoc.Fo.Flow.ExternalGraphic.Layout(Area area) at Telerik.Web.Apoc.Fo.FObjMixed.Layout(Area area) at Telerik.Web.Apoc.Fo.Flow.Block.Layout(Area area) at Telerik.Web.Apoc.Fo.Flow.TableCell.Layout(Area area) at Telerik.Web.Apoc.Fo.Flow.TableRow.Layout(Area area) at Telerik.Web.Apoc.Fo.Flow.AbstractTableBody.Layout(Area area) at Telerik.Web.Apoc.Fo.Flow.Table.Layout(Area area) at Telerik.Web.Apoc.Fo.Flow.Block.Layout(Area area) at Telerik.Web.Apoc.Fo.Flow.Flow.Layout(Area area, Region region) at Telerik.Web.Apoc.Fo.Pagination.PageSequence.Format(AreaTree areaTree) at Telerik.Web.Apoc.StreamRenderer.Render(PageSequence pageSequence) at Telerik.Web.Apoc.Fo.FOTreeBuilder.EndElement() at Telerik.Web.Apoc.Fo.FOTreeBuilder.Parse(XmlReader reader)
at Telerik.Web.Apoc.ApocDriver.FireApocError(String message) at Telerik.Web.Apoc.Fo.FOTreeBuilder.Parse(XmlReader reader) at Telerik.Web.Apoc.ApocDriver.Render(XmlReader inputReader, Stream outputStream) at Telerik.Web.UI.Grid.Export.TableViewExporter.PdfExportRenderForm(HtmlTextWriter nullWriter, Control form) at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) at System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter writer) at System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer) at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) at System.Web.UI.Page.Render(HtmlTextWriter writer) at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
System.SystemException: System.SystemException: Error while creating area : Encountered web exception while fetching image from https://localhost/Client.TSM-SVC/images/svc2/status_white.png: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel. at Telerik.Web.Apoc.ApocDriver.FireApocError(String message) at Telerik.Web.Apoc.Fo.Flow.ExternalGraphic.Layout(Area area) at Telerik.Web.Apoc.Fo.FObjMixed.Layout(Area area) at Telerik.Web.Apoc.Fo.Flow.Block.Layout(Area area) at Telerik.Web.Apoc.Fo.Flow.TableCell.Layout(Area area) at Telerik.Web.Apoc.Fo.Flow.TableRow.Layout(Area area) at Telerik.Web.Apoc.Fo.Flow.AbstractTableBody.Layout(Area area) at Telerik.Web.Apoc.Fo.Flow.Table.Layout(Area area) at Telerik.Web.Apoc.Fo.Flow.Block.Layout(Area area) at Telerik.Web.Apoc.Fo.Flow.Flow.Layout(Area area, Region region) at Telerik.Web.Apoc.Fo.Pagination.PageSequence.Format(AreaTree areaTree) at Telerik.Web.Apoc.StreamRenderer.Render(PageSequence pageSequence) at Telerik.Web.Apoc.Fo.FOTreeBuilder.EndElement() at Telerik.Web.Apoc.Fo.FOTreeBuilder.Parse(XmlReader reader) at Telerik.Web.Apoc.ApocDriver.FireApocError(String message) at Telerik.Web.Apoc.Fo.FOTreeBuilder.Parse(XmlReader reader) at Telerik.Web.Apoc.ApocDriver.Render(XmlReader inputReader, Stream outputStream) at Telerik.Web.UI.Grid.Export.TableViewExporter.PdfExportRenderForm(HtmlTextWriter nullWriter, Control form) at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) at System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter writer) at System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer) at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) at System.Web.UI.Page.Render(HtmlTextWriter writer) at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

Is it because of 'hand-made' certificate on local host? Then why test project works ok via https? And I'd like to have a way to run export on 'hand-made' certificate, because I need to test it before publishing onto production server with 'valid' certificate.
0
Daniel
Telerik team
answered on 12 Jul 2011, 12:01 PM
Hello Alexander,

As I thought, the problem is already fixed. It appears that you have found another issue, but unfortunately I'm unable to reproduce it on my end. I will have to ask you for a runnable sample project as this seems to be the only feasible option at this point.

Kind regards,
Daniel
the Telerik team

Register for the Q2 2011 What's New Webinar Week. Mark your calendar for the week starting July 18th and book your seat for a walk through of all the exciting stuff we will ship with the new release!

0
Alexander
Top achievements
Rank 1
answered on 14 Jul 2011, 06:35 PM
Hi,

i have installed latest telerik version on our development server, with valid SSL certificate and now the message has been changed, please, have a look - maybe you get some clue what's wrong:
System.SystemException: Error while creating area : Encountered web exception while fetching image from https://devservice.debriefit.com/wizards/images/svc2/status_white.png: Unable to connect to the remote server at Telerik.Web.Apoc.ApocDriver.FireApocError(String message) at Telerik.Web.Apoc.Fo.Flow.ExternalGraphic.Layout(Area area) at Telerik.Web.Apoc.Fo.FObjMixed.Layout(Area area) at Telerik.Web.Apoc.Fo.Flow.Block.Layout(Area area) at Telerik.Web.Apoc.Fo.Flow.TableCell.Layout(Area area) at Telerik.Web.Apoc.Fo.Flow.TableRow.Layout(Area area) at Telerik.Web.Apoc.Fo.Flow.AbstractTableBody.Layout(Area area) at Telerik.Web.Apoc.Fo.Flow.Table.Layout(Area area) at Telerik.Web.Apoc.Fo.Flow.Block.Layout(Area area) at Telerik.Web.Apoc.Fo.Flow.Flow.Layout(Area area, Region region) at Telerik.Web.Apoc.Fo.Pagination.PageSequence.Format(AreaTree areaTree) at Telerik.Web.Apoc.StreamRenderer.Render(PageSequence pageSequence) at Telerik.Web.Apoc.Fo.FOTreeBuilder.EndElement() at Telerik.Web.Apoc.Fo.FOTreeBuilder.Parse(XmlReader reader)
at Telerik.Web.Apoc.ApocDriver.FireApocError(String message) at Telerik.Web.Apoc.Fo.FOTreeBuilder.Parse(XmlReader reader) at Telerik.Web.Apoc.ApocDriver.Render(XmlReader inputReader, Stream outputStream) at Telerik.Web.UI.Grid.Export.TableViewExporter.PdfExportRenderForm(HtmlTextWriter nullWriter, Control form) at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) at System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter writer) at System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer) at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) at System.Web.UI.Page.Render(HtmlTextWriter writer) at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
System.SystemException: System.SystemException: Error while creating area : Encountered web exception while fetching image from https://devservice.debriefit.com/wizards/images/svc2/status_white.png: Unable to connect to the remote server at Telerik.Web.Apoc.ApocDriver.FireApocError(String message) at Telerik.Web.Apoc.Fo.Flow.ExternalGraphic.Layout(Area area) at Telerik.Web.Apoc.Fo.FObjMixed.Layout(Area area) at Telerik.Web.Apoc.Fo.Flow.Block.Layout(Area area) at Telerik.Web.Apoc.Fo.Flow.TableCell.Layout(Area area) at Telerik.Web.Apoc.Fo.Flow.TableRow.Layout(Area area) at Telerik.Web.Apoc.Fo.Flow.AbstractTableBody.Layout(Area area) at Telerik.Web.Apoc.Fo.Flow.Table.Layout(Area area) at Telerik.Web.Apoc.Fo.Flow.Block.Layout(Area area) at Telerik.Web.Apoc.Fo.Flow.Flow.Layout(Area area, Region region) at Telerik.Web.Apoc.Fo.Pagination.PageSequence.Format(AreaTree areaTree) at Telerik.Web.Apoc.StreamRenderer.Render(PageSequence pageSequence) at Telerik.Web.Apoc.Fo.FOTreeBuilder.EndElement() at Telerik.Web.Apoc.Fo.FOTreeBuilder.Parse(XmlReader reader) at Telerik.Web.Apoc.ApocDriver.FireApocError(String message) at Telerik.Web.Apoc.Fo.FOTreeBuilder.Parse(XmlReader reader) at Telerik.Web.Apoc.ApocDriver.Render(XmlReader inputReader, Stream outputStream) at Telerik.Web.UI.Grid.Export.TableViewExporter.PdfExportRenderForm(HtmlTextWriter nullWriter, Control form) at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) at System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter writer) at System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer) at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) at System.Web.UI.Page.Render(HtmlTextWriter writer) at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)


This problem does not occur on the simple test project and I don't have idea what could be done about this to reveal the head of the problem. Maybe you may advice some watch tools to trace what happens when Export button is clicked so I could send some logs...
0
Daniel
Telerik team
answered on 21 Jul 2011, 01:35 PM
Hello Alexander,

The error says that the control has failed to make connection to the server that is hosting the image.
I noticed that your PNG file is publicly exposed so I tried to make a simple demo but I'm afraid I failed to reproduce this exception.
By the way, our PDF export does not support transparency - this means that the transparent background will be filled with black color.

Regards,
Daniel
the Telerik team

Register for the Q2 2011 What's New Webinar Week. Mark your calendar for the week starting July 18th and book your seat for a walk through of all the exciting stuff we will ship with the new release!

0
Jesper Matthiesen
Top achievements
Rank 1
answered on 21 Jul 2011, 04:55 PM
Ok, but what could be the reason of this error, why there is no connection? The image is situated in the same domain, same web application :)
0
Daniel
Telerik team
answered on 28 Jul 2011, 09:31 PM
Hello Jesper,

I would also like to know what happens. By the way, do you have any luck in reproducing the error on your end?

Regards,
Daniel
the Telerik team

Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal.

0
Alexander
Top achievements
Rank 1
answered on 15 Aug 2011, 05:05 PM
Hi, Daniel,

I have solved the problem. It was about image path format.
What I had and it did not work:
private static string ImgHtmlWhiteOrGreen(double? itme)
{
    if (itme.HasValue && itme.Value > 0)
    {
        return "<img src='" + HttpContext.Current.GetWebRoot() + "/images/svc2/status_green.png' />";
    }
 
    return "<img src='" + HttpContext.Current.GetWebRoot() + "/images/svc2/status_white.png' />";
}


what I did to make it work:
private static string ImgHtmlWhiteOrGreen(double? itme)
{
    var sb = new StringBuilder();
    var tw = new StringWriter(sb);
    var hw = new HtmlTextWriter(tw);
    var img = new Image();
 
    if (itme.HasValue && itme.Value > 0)
    {
        img.ImageUrl = "~/images/svc2/status_green.png";
    }
    else
    {
        img.ImageUrl = "~/images/svc2/status_white.png";
    }
 
    img.RenderControl(hw);
 
    return sb.ToString();
}


Voila :)
0
Daniel
Telerik team
answered on 15 Aug 2011, 09:52 PM
Hello Alexander,

Glad to hear you managed to sidestep this problem. Thanks to one of our clients we were able to reproduce a similar behavior in Sharepoint environment.
That said, this is already fixed in the latest internal builds, so you might want to give it a try and see if it helps in your scenario:
Latest Internal Builds

Best regards,
Daniel
the Telerik team

Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal.

0
Alexander
Top achievements
Rank 1
answered on 16 Jun 2012, 12:43 PM
Hi again :)

we still experience export problem with client-side binding grid. I won't put the code here again, because it has already been published in this thread.

The problem is that when I hide pager (it's also a custom one) in this grid - while exporting, I am getting this annoying "No data" text as a last row of my data. So, information exported is correct, just that I have this extra "trash" text below it.

Where this text could be coming from?

This problem exists both in Excel and PDF files. And additionally, I have weird "empty" button controls in Excel file, that are situated right on top of some data cells! They have no text on it, just narrow grey buttons...

Used Telerik version is 2011.3.1305.40
0
Daniel
Telerik team
answered on 21 Jun 2012, 09:47 AM
Hello Alexander,

Let me know how do you hide the pager, please. About the empty buttons, can you show the modified version of your markup? I will try to identify the cause from your code-snippets.

Regards,
Daniel
the Telerik team
If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now.
0
Alexander
Top achievements
Rank 1
answered on 21 Jun 2012, 10:20 AM
Hi, thanks for the reply! Here's the html:

<div commanditemdisplay="Top" emptydatatext="No data" class="RadGrid RadGrid_GreenSF FullWidth" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient" tabindex="0" style="visibility: visible;">
 
<table border="0" style="width:100%;table-layout:auto;empty-cells:show;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00" class="rgMasterTable">
    <colgroup>
        <col>
        <col>
        <col>
        <col>
        <col>
        <col>
    </colgroup>
<thead>
        <tr class="rgCommandRow">
            <td colspan="6" class="rgCommandCell">
            <div class="gridCaptionBackground">
                 
                <table class="gridCaptionTable"><tbody><tr><td></td><td><span class="textTransformUpperCase">Drive usage statistics per <span id="idDays">15</span> days:</span></td></tr></tbody></table>
            <div class="floatRight paddingLeft4px paddingRight4px paddingTop4px paddingBottom4px">
                    <a href="javascript:__doPostBack('ctl00$cphMain$tsmLibraryCard$ctl02$gridClient$ctl00$ctl02$ctl00$gridClient_ExportToExcelButton','')" class="excelbutton" title="Export this view to Excel" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl02_ctl00_gridClient_ExportToExcelButton"><img style="border-width:0px;" src="../App_Themes/GreenSF/B4Grid/excel.png"></a>
                </div><div class="floatRight paddingLeft4px paddingRight4px paddingTop4px paddingBottom4px">
                    <a href="javascript:__doPostBack('ctl00$cphMain$tsmLibraryCard$ctl02$gridClient$ctl00$ctl02$ctl00$gridClient_ExportToPdfButton','')" class="pdfbutton" title="Export this view to PDF" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl02_ctl00_gridClient_ExportToPdfButton"><img style="border-width:0px;" src="../App_Themes/GreenSF/B4Grid/pdf.png"></a>
                </div>
            </div>
        </td>
        </tr><tr>
            <th class="GridHeaderGreen la" scope="col">Server Name<input type="submit" style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__TemplateColumn__SortAsc" class="rgSortAsc" title="Sorted asc" onclick="if(!$find('ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00').sort('')) return false;" value=" " name="ctl00$cphMain$tsmLibraryCard$ctl02$gridClient$ctl00$ctl02$ctl01$ctl04"><input type="submit" style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__TemplateColumn__SortDesc" class="rgSortDesc" title="Sorted desc" onclick="if(!$find('ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00').sort('')) return false;" value=" " name="ctl00$cphMain$tsmLibraryCard$ctl02$gridClient$ctl00$ctl02$ctl01$ctl05"></th><th class="GridHeaderGreen la" scope="col">Library Name<input type="submit" style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__TemplateColumn1__SortAsc" class="rgSortAsc" title="Sorted asc" onclick="if(!$find('ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00').sort('')) return false;" value=" " name="ctl00$cphMain$tsmLibraryCard$ctl02$gridClient$ctl00$ctl02$ctl01$ctl06"><input type="submit" style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__TemplateColumn1__SortDesc" class="rgSortDesc" title="Sorted desc" onclick="if(!$find('ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00').sort('')) return false;" value=" " name="ctl00$cphMain$tsmLibraryCard$ctl02$gridClient$ctl00$ctl02$ctl01$ctl07"></th><th class="GridHeaderGreen la" scope="col">Drive<input type="submit" style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__TemplateColumn2__SortAsc" class="rgSortAsc" title="Sorted asc" onclick="if(!$find('ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00').sort('')) return false;" value=" " name="ctl00$cphMain$tsmLibraryCard$ctl02$gridClient$ctl00$ctl02$ctl01$ctl08"><input type="submit" style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__TemplateColumn2__SortDesc" class="rgSortDesc" title="Sorted desc" onclick="if(!$find('ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00').sort('')) return false;" value=" " name="ctl00$cphMain$tsmLibraryCard$ctl02$gridClient$ctl00$ctl02$ctl01$ctl09"></th><th class="GridHeaderGreen ra" scope="col">Drive usage, hours<input type="submit" style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__TemplateColumn3__SortAsc" class="rgSortAsc" title="Sorted asc" onclick="if(!$find('ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00').sort('')) return false;" value=" " name="ctl00$cphMain$tsmLibraryCard$ctl02$gridClient$ctl00$ctl02$ctl01$ctl10"><input type="submit" style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__TemplateColumn3__SortDesc" class="rgSortDesc" title="Sorted desc" onclick="if(!$find('ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00').sort('')) return false;" value=" " name="ctl00$cphMain$tsmLibraryCard$ctl02$gridClient$ctl00$ctl02$ctl01$ctl11"></th><th class="GridHeaderGreen ra" scope="col">Duty cycle, %<input type="submit" style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__TemplateColumn4__SortAsc" class="rgSortAsc" title="Sorted asc" onclick="if(!$find('ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00').sort('')) return false;" value=" " name="ctl00$cphMain$tsmLibraryCard$ctl02$gridClient$ctl00$ctl02$ctl01$ctl12"><input type="submit" style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__TemplateColumn4__SortDesc" class="rgSortDesc" title="Sorted desc" onclick="if(!$find('ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00').sort('')) return false;" value=" " name="ctl00$cphMain$tsmLibraryCard$ctl02$gridClient$ctl00$ctl02$ctl01$ctl13"></th><th class="GridHeaderGreen ra" scope="col">Mounts<input type="submit" style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__TemplateColumn5__SortAsc" class="rgSortAsc" title="Sorted asc" onclick="if(!$find('ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00').sort('')) return false;" value=" " name="ctl00$cphMain$tsmLibraryCard$ctl02$gridClient$ctl00$ctl02$ctl01$ctl14"><input type="submit" style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__TemplateColumn5__SortDesc" class="rgSortDesc" title="Sorted desc" onclick="if(!$find('ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00').sort('')) return false;" value=" " name="ctl00$cphMain$tsmLibraryCard$ctl02$gridClient$ctl00$ctl02$ctl01$ctl15"></th>
        </tr>
    </thead><tbody>
    <tr style="display: table-row;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__0" class="rgRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl04_ServerName">LIBMAN01A</span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl04_LibraryName">TS3500-L1</span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl04_DriveNameValue">L1-DRV01 (/dev/rmt0)</span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl04_HoursFormatted">0.1</span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl04_HoursPercentFormatted">0.0</span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl04_MountCountFormatted">1</span>
                </td>
    </tr><tr style="display: table-row;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__1" class="rgAltRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl06_ServerName">LIBMAN01A</span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl06_LibraryName">TS3500-L1</span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl06_DriveNameValue">L1-DRV02 (/dev/rmt1)</span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl06_HoursFormatted">0.2</span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl06_HoursPercentFormatted">0.1</span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl06_MountCountFormatted">3</span>
                </td>
    </tr><tr style="display: table-row;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__2" class="rgRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl08_ServerName">LIBMAN01A</span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl08_LibraryName">TS3500-L1</span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl08_DriveNameValue">L1-DRV03 (/dev/rmt2)</span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl08_HoursFormatted">0.1</span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl08_HoursPercentFormatted">0.0</span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl08_MountCountFormatted">1</span>
                </td>
    </tr><tr style="display: table-row;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__3" class="rgAltRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl10_ServerName">LIBMAN01A</span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl10_LibraryName">TS3500-L1</span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl10_DriveNameValue">L1-DRV04 (/dev/rmt3)</span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl10_HoursFormatted">0.3</span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl10_HoursPercentFormatted">0.1</span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl10_MountCountFormatted">4</span>
                </td>
    </tr><tr style="display: table-row;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__4" class="rgRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl12_ServerName">LIBMAN01A</span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl12_LibraryName">TS3500-L1</span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl12_DriveNameValue">L1-DRV05 (/dev/rmt4)</span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl12_HoursFormatted">0.0</span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl12_HoursPercentFormatted">0.0</span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl12_MountCountFormatted">1</span>
                </td>
    </tr><tr style="display: table-row;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__5" class="rgAltRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl14_ServerName">LIBMAN01A</span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl14_LibraryName">TS3500-L1</span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl14_DriveNameValue">L1-DRV06 (/dev/rmt5)</span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl14_HoursFormatted">0.2</span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl14_HoursPercentFormatted">0.1</span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl14_MountCountFormatted">4</span>
                </td>
    </tr><tr style="display: table-row;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__6" class="rgRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl16_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl16_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl16_DriveNameValue"><span class="bold">Average</span></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl16_HoursFormatted"><span class="bold">0.1</span></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl16_HoursPercentFormatted"><span class="bold">0.0</span></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl16_MountCountFormatted"><span class="bold">2.3</span></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__7" class="rgAltRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl18_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl18_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl18_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl18_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl18_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl18_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__8" class="rgRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl20_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl20_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl20_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl20_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl20_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl20_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__9" class="rgAltRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl22_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl22_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl22_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl22_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl22_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl22_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__10" class="rgRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl24_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl24_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl24_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl24_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl24_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl24_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__11" class="rgAltRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl26_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl26_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl26_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl26_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl26_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl26_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__12" class="rgRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl28_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl28_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl28_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl28_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl28_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl28_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__13" class="rgAltRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl30_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl30_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl30_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl30_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl30_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl30_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__14" class="rgRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl32_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl32_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl32_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl32_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl32_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl32_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__15" class="rgAltRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl34_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl34_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl34_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl34_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl34_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl34_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__16" class="rgRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl36_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl36_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl36_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl36_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl36_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl36_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__17" class="rgAltRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl38_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl38_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl38_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl38_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl38_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl38_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__18" class="rgRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl40_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl40_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl40_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl40_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl40_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl40_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__19" class="rgAltRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl42_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl42_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl42_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl42_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl42_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl42_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__20" class="rgRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl44_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl44_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl44_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl44_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl44_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl44_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__21" class="rgAltRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl46_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl46_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl46_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl46_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl46_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl46_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__22" class="rgRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl48_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl48_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl48_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl48_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl48_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl48_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__23" class="rgAltRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl50_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl50_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl50_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl50_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl50_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl50_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__24" class="rgRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl52_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl52_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl52_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl52_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl52_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl52_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__25" class="rgAltRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl54_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl54_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl54_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl54_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl54_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl54_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__26" class="rgRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl56_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl56_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl56_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl56_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl56_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl56_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__27" class="rgAltRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl58_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl58_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl58_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl58_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl58_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl58_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__28" class="rgRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl60_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl60_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl60_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl60_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl60_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl60_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__29" class="rgAltRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl62_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl62_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl62_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl62_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl62_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl62_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__30" class="rgRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl64_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl64_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl64_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl64_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl64_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl64_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__31" class="rgAltRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl66_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl66_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl66_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl66_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl66_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl66_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__32" class="rgRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl68_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl68_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl68_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl68_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl68_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl68_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__33" class="rgAltRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl70_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl70_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl70_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl70_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl70_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl70_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__34" class="rgRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl72_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl72_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl72_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl72_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl72_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl72_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__35" class="rgAltRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl74_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl74_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl74_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl74_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl74_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl74_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__36" class="rgRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl76_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl76_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl76_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl76_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl76_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl76_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__37" class="rgAltRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl78_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl78_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl78_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl78_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl78_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl78_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__38" class="rgRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl80_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl80_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl80_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl80_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl80_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl80_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__39" class="rgAltRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl82_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl82_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl82_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl82_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl82_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl82_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__40" class="rgRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl84_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl84_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl84_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl84_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl84_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl84_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__41" class="rgAltRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl86_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl86_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl86_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl86_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl86_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl86_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__42" class="rgRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl88_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl88_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl88_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl88_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl88_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl88_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__43" class="rgAltRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl90_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl90_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl90_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl90_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl90_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl90_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__44" class="rgRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl92_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl92_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl92_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl92_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl92_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl92_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__45" class="rgAltRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl94_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl94_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl94_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl94_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl94_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl94_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__46" class="rgRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl96_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl96_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl96_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl96_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl96_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl96_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__47" class="rgAltRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl98_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl98_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl98_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl98_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl98_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl98_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__48" class="rgRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl100_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl100_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl100_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl100_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl100_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl100_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__49" class="rgAltRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl102_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl102_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl102_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl102_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl102_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl102_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__50" class="rgRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl104_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl104_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl104_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl104_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl104_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl104_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__51" class="rgAltRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl106_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl106_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl106_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl106_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl106_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl106_MountCountFormatted"></span>
                </td>
    </tr><tr style="display:none;" id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00__52" class="rgRow">
        <td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl108_ServerName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl108_LibraryName"></span>
                </td><td class="la">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl108_DriveNameValue"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl108_HoursFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl108_HoursPercentFormatted"></span>
                </td><td class="ra">
                    <span id="ctl00_cphMain_tsmLibraryCard_ctl02_gridClient_ctl00_ctl108_MountCountFormatted"></span>
                </td>