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

[Solved] Print Details Button

1 Answer 85 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Larry
Top achievements
Rank 1
Larry asked on 10 Nov 2009, 04:11 PM
Hello all...

I would like to use the following JavaScript to print the contents of a details table.
  function PrintRadGrid()  
        {  
            var previewWnd = window.open('about:blank', '', '', false);  
            var sh = '<%= ClientScript.GetWebResourceUrl(radGrid1.GetType(),String.Format("Telerik.Web.UI.Skins.{0}.Grid.{0}.css",radGrid1.Skin)) %>';  
            var styleStr = "<html><head><link href = '" + sh + "' rel='stylesheet' type='text/css'></link></head>";  
            var detailTable = $find('<%= radGrid1.ClientID %>').get_detailTables()[0];  
            var htmlcontent = styleStr + "<body><div class='RadGrid RadGrid_Simple'>" + detailTable.get_element().outerHTML + "</div></body></html>";  
            previewWnd.document.open();  
            previewWnd.document.write(htmlcontent);  
            previewWnd.document.close();  
            previewWnd.print();  
        } 
 This works just fine for the first details results.

I would like to change this to the following.
  function PrintRadGrid(detailsID)  
        {  
            var previewWnd = window.open('about:blank', '', '', false);  
            var sh = '<%= ClientScript.GetWebResourceUrl(radGrid1.GetType(),String.Format("Telerik.Web.UI.Skins.{0}.Grid.{0}.css",radGrid1.Skin)) %>';  
            var styleStr = "<html><head><link href = '" + sh + "' rel='stylesheet' type='text/css'></link></head>";  
            var detailTable = $find('<%= radGrid1.ClientID %>').get_detailTables()[detailsID];  
            var htmlcontent = styleStr + "<body><div class='RadGrid RadGrid_Simple'>" + detailTable.get_element().outerHTML + "</div></body></html>";  
            previewWnd.document.open();  
            previewWnd.document.write(htmlcontent);  
            previewWnd.document.close();  
            previewWnd.print();  
        } 
 And in the serverside code the following
Protected Sub RadGrid1_ItemDataBound(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridItemEventArgs) Handles RadGrid1.ItemDataBound  
        If TypeOf e.Item Is GridDataItem Then  
 
            Dim dataItem As GridDataItem = DirectCast(e.Item, GridDataItem)  
 
            If Not (e.Item.OwnerTableView.DataSourceID = "SqlDataSource2") Then  
 
dim detailsID as integer = ??? 'How do I get the details id?  
 
                 
Dim ImagePrintButton As ImageButton = DirectCast(dataItem("ImagePrintCol").FindControl("ImagePrint"), ImageButton)  
        ImagePrintButton.Attributes.Add("onclick", "PrintRadGrid('" & detailsID & "'");return false;")  
 
             
            End If  
 
        End If  
 
    End Sub 
How do I get the detailTable ID so I can add it to the print button? Thanks.

1 Answer, 1 is accepted

Sort by
0
Princy
Top achievements
Rank 2
answered on 11 Nov 2009, 09:11 AM
Hello Larry,

You can get the detail table Id as shown in the code below:
vb:
Protected Sub RadGrid1_ItemDataBound(ByVal sender As ObjectByVal e As Telerik.Web.UI.GridItemEventArgs) Handles RadGrid1.ItemDataBound   
        If TypeOf e.Item Is GridDataItem Then    
            Dim dataItem As GridDataItem = DirectCast(e.Item, GridDataItem)   
  
            If Not (e.Item.OwnerTableView.DataSourceID = "SqlDataSource2"Then   
  
               Dim detailsID As String = e.Item.OwnerTableView.ID                  
               Dim ImagePrintButton As ImageButton = DirectCast(dataItem("ImagePrintCol").FindControl("ImagePrint"), ImageButton)   
               ImagePrintButton.Attributes.Add("onclick""PrintRadGrid('" & detailsID & "'");return false;")    
              
            End If    
        End If  
End Sub  

Hope this helps..
Princy.
Tags
Grid
Asked by
Larry
Top achievements
Rank 1
Answers by
Princy
Top achievements
Rank 2
Share this question
or