Menambah parameter ketika event Gridview RowCommand Maret 25, 2010
Posted by layyuddi in ASP.NET.Tags: ASP.NET, CommandArgument, Gridview RowCommand, RowCommand
add a comment
Ketika kita menggunakan GridView pada asp.net terkadang kita ingin melakukan event GridView RowCommand. Misalnya didalamnya kita ingin menambah tombol edit yang mengirim parameter ke page lain. Kita bisa mengambil satu parameter dengan CommandArgument, yang diset pada saat binding.
Ketika kita ingin mengambil nilai lain pada item template di gridview kita, kita bisa menggunakan :
GridViewRow row = (GridViewRow)(((ImageButton)e.CommandSource).NamingContainer);
string statusTransfer = ((Label)row.FindControl(“lblStatusTrans”)).Text;
Immage button yang diatas itu, tombol yang saya gunakan untuk melink ke page lain. lblStatusTrans adalah label yang saya ingin kirimkan nilainya. Jadi saya akan mendapatkan nilai dari label pada row yang bersangkutan saya klik.
Menggabungkan Crystal Report Document dalam pdf dengan iTextSharp Agustus 11, 2009
Posted by layyuddi in ASP.NET.Tags: crystalreport, iTextSharp, reportdocument
add a comment
Ketika saya mempunyai beberapa report yang ingin digabungkan agar keluar dalam bentuk satu pdf yang sama, saya menggunakan iTextSharp untuk membantu menggabungkan documentnya. iTextSharp bisa di dapat dari : http://itextsharp.sourceforge.net
Berikut sepenggal code yang saya buat pada modul saya :
Imports System.Data
Imports System.Data.OleDb
Imports System.Data.SqlClient
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
Imports System.IO
Imports system.IO.FileMode
Imports System.IO.FileStream
Imports iTextSharp.text
Imports iTextSharp.text.pdf
Partial Class pages_report_Print_Report
Inherits System.Web.UI.Page
Private ClsObjRptAnnualPolicy As New ObjRptAnnual()
Dim clsObjPrint As New ObjPrint
Dim gclDBClass As GreatlinkClass.DBClass
Dim MyReportDocument(12) As ReportDocument
Dim SubReportDocument As ReportDocument
Dim strSql As String
Dim ds As DataSet, dsd As DataSet
Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
Call PrintPV()
End Sub
Sub PrintPV()
'MENGAMBIL PARAMETER DARI PAGE SEBELUMNYA DALAM BENTUK ARRAY
Dim strPolicyNo As String = Request.QueryString("PolicyNo")
Dim strTransType As String = Request.QueryString("TransType")
Dim strTransNo As String = Request.QueryString("TransNo")
Dim strTransDate As String = Request.QueryString("TransDate")
Dim ArrPolicyNo() As String = Split(strPolicyNo, ",")
Dim ArrTransNo() As String = Split(strTransNo, ",")
Dim ArrTransDate() As String = Split(strTransDate, ",")
Dim oStream As New MemoryStream
Dim oStream2 As New MemoryStream
Dim i, j As Integer
'MELAKUKAN PERULANGAN UNTUK MEMBUAT REPORT DOCUMENT
For i = 0 To ArrPolicyNo.Length - 2
Dim MyTable As DataTable
Dim DetailTable As DataTable
If (strTransType = "WD") Then
MyTable = clsObjPrint.Get_GeneralHeaderStatement(ArrPolicyNo(i))
DetailTable = clsObjPrint.Get_DetailWithdrawal(ArrPolicyNo(i), strTransType, ArrTransNo(i), ArrTransDate(i))
MyReportDocument(i) = New ReportDocument()
MyReportDocument(i).Load(Server.MapPath("CR_Withdrawal.rpt"))
MyReportDocument(i).SetDataSource(MyTable)
MyReportDocument(i).Subreports.Item("CR_detailwd.rpt").SetDataSource(DetailTable)
MyReportDocument(i).Subreports.Item("CR_detailWd.rpt").SetDataSource(DetailTable)
ElseIf (strTransType = "SU") Then
MyTable = clsObjPrint.Get_GeneralHeaderStatement(ArrPolicyNo(i))
DetailTable = clsObjPrint.Get_DetailWithdrawal(ArrPolicyNo(i), strTransType, ArrTransNo(i), ArrTransDate(i))
MyReportDocument(i) = New ReportDocument()
MyReportDocument(i).Load(Server.MapPath("CR_Surrender.rpt"))
MyReportDocument(i).SetDataSource(MyTable)
MyReportDocument(i).Subreports.Item("CR_detailSuu.rpt").SetDataSource(DetailTable)
MyReportDocument(i).Subreports.Item("CR_detailSu.rpt").SetDataSource(DetailTable)
End If
Next
'JIKA REPORT DOCUMENT TERISI HANYA SATU, MAKA DIEXPORT LANGSUNG KE PDF AGAR LEBIH CEPAT
If i = 1 Then
oStream = MyReportDocument(0).ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat)
Response.ContentType = "application/pdf"
Try
Response.BinaryWrite(oStream.ToArray())
clsObjPrint.add_reprint(ArrPolicyNo(0), strTransType, ArrTransNo(0), ArrTransDate(0))
Response.End()
Catch err As Exception
Response.Write("< BR > asdf")
Response.Write(err.Message.ToString)
End Try
'JIKA REPORT DOCUMENT TERISI LEBIH DARI MAKA DIGABUNGKAN MENGGUNAKAN ITEXTSHARP KEMUDIAN DIEXPORT KE PDF
Else
Dim mymemorystream As New MemoryStream
Dim reader As iTextSharp.text.pdf.PdfReader
Dim NumberofPages As Integer
Dim curPageNo As Integer
Dim doc As New iTextSharp.text.Document
Dim writer As iTextSharp.text.pdf.PdfWriter = iTextSharp.text.pdf.PdfWriter.GetInstance(doc, oStream)
doc.Open()
Dim page As iTextSharp.text.pdf.PdfImportedPage
Dim rotation As Integer
Dim cb As iTextSharp.text.pdf.PdfContentByte = writer.DirectContent
'PERULANGAN UNTUK MENGAMBIL SETIAP REPORT DOCUMENT
For j = 0 To i - 1
mymemorystream = New MemoryStream
mymemorystream = MyReportDocument(j).ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat)
Dim length As Long = mymemorystream.Length
Dim rptContent(length) As Byte
mymemorystream.Read(rptContent, 0, Convert.ToInt32(length))
reader = New iTextSharp.text.pdf.PdfReader(rptContent)
NumberofPages = reader.NumberOfPages
curPageNo = 0
'PERULANGAN UNTUK MENGGABUNGKAN PDF DENGAN ITEXTSHARP
Do While (curPageNo < NumberofPages)
curPageNo += 1
doc.SetPageSize(PageSize.LETTER)
doc.NewPage()
page = writer.GetImportedPage(reader, curPageNo)
rotation = reader.GetPageRotation(curPageNo)
If (rotation = 90) Or (rotation = 270) Then
cb.AddTemplate(page, 0, -1.0F, 1.0F, 0, 0, reader.GetPageSizeWithRotation(curPageNo).Height)
Else
cb.AddTemplate(page, 1.0F, 0, 0, 1.0F, 0, 0)
End If
Loop
'DATA DIINSERT KE HIS_STATEMENT SEBAGAI HISTORY BAHWA SUDAH PERNAH DI PRINT
clsObjPrint.add_reprint(ArrPolicyNo(j), strTransType, ArrTransNo(j), ArrTransDate(j))
Next
mymemorystream.Close()
Response.Buffer = True
Response.ContentType = "application/pdf"
Response.AddHeader("Content-Disposition", "inline")
If oStream Is Nothing Then
Response.Write("No Data is available for output")
Else
doc.Close()
Response.BinaryWrite(oStream.GetBuffer())
Response.End()
End If
End If
For j = 0 To i - 1
MyReportDocument(j).Close()
MyReportDocument(j).Dispose()
Next
oStream.Close()
crPV.Dispose()
'JANGAN LUPA UNTUK CLOSE SEMUA DOCUMENT, MEMORY STREAM DAN REPORT DOCUMENT
End Sub
End Class