Comunidad de diseño web y desarrollo en internet online

Imprimir data de un DataGrid

Citar            
MensajeEscrito el 27 Sep 2013 09:37 pm
Hola,

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;
}

Por chochito_alegre

51 de clabLevel



Genero:Masculino  

Lima - Perú

firefox
Citar            
MensajeEscrito el 01 Oct 2013 03:43 am
Hola,

Haciendo pruebas descubri que cuando imprimo desde mi PC, es decir, sin subir el archivo swf a la web, funciona perfecto.. imprime muy bien.. sin embargo lo basta que lo suba y es ahi cuando se genera el error... solo imprimer la primera pagina y el resto en blanco...

Alguien alguna vez ha tenido un error o problema similar??

Muchas gracias

Por chochito_alegre

51 de clabLevel



Genero:Masculino  

Lima - Perú

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.