2010-12-08 5 views
0

je suis en utilisant le code suivant pour imprimer le contenu de WebApplication -problème d'impression dans asp.net webapplication

using System; 
using System.Data; 
using System.Configuration; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Web.UI.HtmlControls; 
using System.IO; 
using System.Text; 
using System.Web.SessionState; 

public class PrintHelper 
{ 
    public PrintHelper() 
    { 
    } 

    public static void PrintWebControl(Control ctrl) 
    { 
     PrintWebControl(ctrl, string.Empty); 
    } 

    public static void PrintWebControl(Control ctrl, string Script) 
    { 
     StringWriter stringWrite = new StringWriter(); 
     System.Web.UI.HtmlTextWriter htmlWrite = new System.Web.UI.HtmlTextWriter(stringWrite); 
     if (ctrl is WebControl) 
     { 
      Unit w = new Unit(100, UnitType.Percentage); ((WebControl)ctrl).Width = w; 
     } 
     Page pg = new Page(); 
     pg.EnableEventValidation = false; 
     if (Script != string.Empty) 
     { 
      pg.ClientScript.RegisterStartupScript(pg.GetType(),"PrintJavaScript", Script); 
     } 
     HtmlForm frm = new HtmlForm(); 
     pg.Controls.Add(frm); 
     frm.Attributes.Add("runat", "server"); 
     frm.Controls.Add(ctrl); 
     pg.DesignerInitialize(); 
     pg.RenderControl(htmlWrite); 
     string strHTML = stringWrite.ToString(); 
     HttpContext.Current.Response.Clear(); 
     HttpContext.Current.Response.Write(strHTML); 
     HttpContext.Current.Response.Write("<script>window.print();</script>"); 
     HttpContext.Current.Response.End(); 
    } 
} 

ici je passe le contrôle de la zone de texte à la méthode PrintWebControl().

sur le bouton d'impression cliquez sur i écrire -

protected void btnPrint_Click(object sender, EventArgs e) 
    { 
     Session["ctrl"] = Panel1; 
     ClientScript.RegisterStartupScript(this.GetType(), "onclick", "<script language=javascript>window.open('Print.aspx','PrintMe','height=300px,width=300px,scrollbars=1');</script>"); 
    } 

maintenant problème est que quand je lance cette application et appuyez sur le bouton d'impression alors que la moitié de la matière de zone de texte multiligne est imprimé par l'imprimante, mais une partie reste non. Alors dites-moi comment j'imprime la boîte de texte multiligne en utilisant le code ci-dessus. Notez que ma boîte de texte multiligne a d'énormes données qui seront imprimées sur plus de 4 ou 5 pages.

si vous avez un autre code pour faire vous s'il vous plaît partager avec moi

merci à vous tous à l'avance

Répondre

0

je pense que u rater un concept ici.

HttpContext.Current.Response.Clear(); 

va effacer votre en-tête de réponse. et puis vous appelez 'HttpContext.Current.Response.Write (...)' qui sera lu comme contenu pur texte pas un contenu de page Web.

si u voulez imprimer une section spécifique de la page Web, utilisez css

<style media="print"> 
... 
</style> 

et le contenu de la page comme mis en page asp normale. iframe peut également vous aider en définissant vos données sur iframe en définissant tout le reste à afficher: none (dans css media = "print") et définissez iframe pour afficher: block.

modifier

en page en cours

<script type="text/javascript"> 
function openPopup(){ 
    window.open('Print.aspx','PrintMe','height=300px,width=300px,scrollbars=1'); 
} 
</script> 

et bouton d'impression en page en cours (type d'entrée d'utilisation "bouton" =)

<input type="button" value="Print" onclick="openPopup()"/> 

pour appeler la page openPopup. Et puis, dans print.aspx, créez la page aspx normale et les valeurs initiales dont vous avez besoin. et

**print.aspx 
<script> 
function print(){ 
    window.print(); 
} 
</script> 
... 
<body onload="print();"> 

le processus va comme ceci 1 utilisateur clic sur le bouton d'impression dans la page en cours 2 openPopup(); 3 print.aspx en cours de chargement 4 init toutes les valeurs requises 5 dans print.aspx La page 'print()' sera déclenchée lorsque print.aspx sera prêt.

+0

En fait, je comprends comment j'utilise css pour l'impression parce que je suis nouveau dans C#. NET alors s'il vous plaît dites-moi brièvement ou envoyer le code que je fais –