EStoy intentando imprimir la data de un DataGrid.
Honestamente no tengo la menor idea de como se hace, sin embargo, buscando por internet, encontré un archivo fla con un código. Al probar el archivo que encontre con el dataGrid ejemplo que este incluia imprimio muy bien, sin embargo, al copiar el código y ponerlo en mi archivo fla, no resultó tan bien; lo que he logrado imprimer es la primera página perfecta, la segunda página sólo imprime los header del dataGrid y nada de data, la tercera y cuarta pagina las imprime en blanco.
Quisiera saber si alguien me podía ayudar a encontrar el error o que es lo que debo cambiar. En mi documento el data grid que quiero imprimir se llama stock_grid.
Muchas gracias
Código ActionScript :
function doPrint():Void { var pagesToPrint:Number = 0; var _objPrintJob:PrintJob = new PrintJob(); var _printOK:Boolean = _objPrintJob.start(); if (!_printOK) { delete _objPrintJob; return; } var printOutput:MovieClip = createDgPrintClip(stock_grid, _objPrintJob); var _pageHeight:Number = Math.floor(_objPrintJob.pageHeight / printOutput.rowHeight) * printOutput.rowHeight; var _yMin:Number = 0; var xMargin:Number = -40; var rightMargin = 30; while (_yMin < printOutput._height) { var _yMax:Number = _yMin + _pageHeight; if (_objPrintJob.addPage(printOutput, {xMin:xMargin, xMax:_objPrintJob.pageWidth + xMargin - rightMargin, yMin:_yMin, yMax:_yMax})) { pagesToPrint++; } _yMin = _yMax; } if (pagesToPrint > 0) { _objPrintJob.send(); } delete _objPrintJob; printOutput.removeMovieClip(); } function createDgPrintClip(targetDG:DataGrid, printJob:PrintJob):MovieClip { var headerFormat:TextFormat = new TextFormat(); headerFormat.size = 8; headerFormat.font = "Arial"; headerFormat.bold = true; headerFormat.leftMargin = 4; var txtFormat:TextFormat = new TextFormat(); txtFormat.size = 8; txtFormat.font = "Arial"; txtFormat.leftMargin = 4; var _rowHeight:Number = 18; var _rowsPerPage:Number = Math.floor(printJob.pageHeight / _rowHeight) - 4; var printClip:MovieClip = createEmptyMovieClip("print_mc", 100000); printClip._visible = false; var columns:Array = targetDG.columnNames; var xPos:Number = 0; var tbWidth:Number = 0; var rowY:Number = _rowHeight * 2; for (var i = 0; i < columns.length; i++) { xPos = xPos + tbWidth; var column:DataGridColumn = targetDG.getColumnAt(i); tbWidth = column.width; printClip.createTextField("header_" + i,printClip.getNextHighestDepth(),xPos,rowY,tbWidth,_rowHeight); var thisTb:TextField = printClip["header_" + i]; thisTb.setNewTextFormat(headerFormat); thisTb.border = true; thisTb.borderColor = 0xCCCCCC; thisTb.background = true; thisTb.backgroundColor = 0xD5EAFF; thisTb.text = column.headerText; } var pageRows:Number = 1; var pages:Number = 1; var dataArray:Object = targetDG.dataProvider; for (var j = 0; j < dataArray.length; j++) { if (pageRows == _rowsPerPage) { rowY += _rowHeight * 5; pageRows = 1; pages++; xPos = 0; tbWidth = 0; for (var i = 0; i < columns.length; i++) { xPos = xPos + tbWidth; var column:DataGridColumn = targetDG.getColumnAt(i); tbWidth = column.width; printClip.createTextField("header_" + pages + "_" + i,printClip.getNextHighestDepth(),xPos,rowY,tbWidth,_rowHeight); var thisTb:TextField = printClip["header_" + pages + "_" + i]; thisTb.setNewTextFormat(headerFormat); thisTb.border = true; thisTb.borderColor = 0xCCCCCC; thisTb.background = true; thisTb.backgroundColor = 0xD5EAFF; thisTb.text = column.headerText; } } rowY += _rowHeight; pageRows++; xPos = 0; tbWidth = 0; var rowData:Object = dataArray.getItemAt(j); for (var i = 0; i < columns.length; i++) { xPos = xPos + tbWidth; var column:DataGridColumn = targetDG.getColumnAt(i); tbWidth = column.width; printClip.createTextField("field_" + j + "_" + i,printClip.getNextHighestDepth(),xPos,rowY,tbWidth,_rowHeight); var thisTb:TextField = printClip["field_" + j + "_" + i]; thisTb.setNewTextFormat(txtFormat); thisTb.border = true; thisTb.borderColor = 0xCCCCCC; thisTb.text = rowData[columns[i]]; } } printClip.rowHeight = _rowHeight; return printClip; }