IMPRIMIR TEXTBOX

MLALEX 14/08/2015 15:43:15
#449993
Olá pessoal!! Preciso imprimir apenas o conteúdo de um TextBox em uma página, mas o código abaixo não funciona. O que há de errado com esse código??

          Response.Write([Ô]<script Language=[Ô][Ô]javascript[Ô][Ô]>[Ô])
Response.Write([Ô]var Dados = document.getElementById(TextBox1.text);[Ô])
Response.Write([Ô]printWindow = window.open([Ô][Ô], [Ô][Ô], [ô]left=50000,top=50000,width=0,height=0[ô]);[Ô])
Response.Write([Ô]printWindow.document.write(Dados)[Ô])
Response.Write([Ô]printWindow.document.close();[Ô])
Response.Write([Ô]printWindow.focus();[Ô])
Response.Write([Ô]printWindow.print();[Ô])
Response.Write([Ô]printWindow.close();[Ô])
Response.Write([Ô]</script>[Ô])

JABA 14/08/2015 17:46:36
#449999
Faltou um ponto-e-vírgula em --> Response.Write([Ô]printWindow.document.write(Dados)[Ô])
MLALEX 14/08/2015 19:03:48
#450002
E aí Jaba??

Cara, coloquei o ponto e vírgula, mas de nada adiantou. Continuou sem imprimir e nem sequer abriu janela alguma. Tá faltando mais alguma coisa nesse código.
MLALEX 14/08/2015 19:31:20
#450003
Olha só, achei esse código que funciona, mas não respeita as quebras de linhas do meu textbox. Fica tudo direto, desorganizado:

  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim sPrintScript As System.Text.StringBuilder = New System.Text.StringBuilder
sPrintScript.Append([Ô]<script type=[ô]text/javascript[ô]>[Ô]).AppendLine([Ô][Ô])
sPrintScript.Append([Ô]<!--[Ô]).AppendLine([Ô][Ô])
sPrintScript.Append([Ô]function printText(elementId)[Ô]).AppendLine([Ô][Ô])
sPrintScript.Append([Ô]{[Ô]).AppendLine([Ô][Ô])
sPrintScript.Append([Ô]var printContent = document.getElementById(elementId);[Ô]).AppendLine([Ô][Ô])
sPrintScript.Append([Ô]var windowUrl = [ô]about:blank[ô];[Ô]).AppendLine([Ô][Ô])
sPrintScript.Append([Ô]var windowName = [ô]Print[ô] + new Date().getTime();[Ô]).AppendLine([Ô][Ô])
sPrintScript.Append([Ô]var sTextToPrint = printContent.innerHTML;[Ô]).AppendLine([Ô][Ô])
sPrintScript.Append([Ô]var printWindow = window.open(windowUrl, windowName, [ô]left=50000,top=50000,width=0,height=0[ô]);[Ô])
sPrintScript.AppendLine([Ô][Ô])
sPrintScript.Append([Ô]printWindow.document.write(sTextToPrint);[Ô]).AppendLine([Ô][Ô])
sPrintScript.Append([Ô]printWindow.document.close();[Ô]).AppendLine([Ô][Ô])
sPrintScript.Append([Ô]printWindow.focus();[Ô]).AppendLine([Ô][Ô])
sPrintScript.Append([Ô]printWindow.print();[Ô]).AppendLine([Ô][Ô])
sPrintScript.Append([Ô]printWindow.close();[Ô]).AppendLine([Ô][Ô]).Append([Ô]}[Ô]).AppendLine([Ô][Ô])
sPrintScript.Append([Ô]// -->[Ô]).AppendLine([Ô][Ô])
sPrintScript.Append([Ô]</script>[Ô])
If Not ClientScript.IsClientScriptBlockRegistered([Ô]printText[Ô]) Then _
ClientScript.RegisterClientScriptBlock(Me.GetType(), [Ô]printText[Ô], sPrintScript.ToString)
Button1.Attributes.Add([Ô]onclick[Ô], String.Format([Ô]return printText([ô]{0}[ô]);[Ô], Me.TextBox1.ClientID))
End Sub


Tenho um código que funciona diretinho mas imprime a página inteira, então, tentei enviar o conteúdo do textbox para uma página vazia usando uma session e imprimir a página, mas quando recupero o texto da session e uso o Response.write, fica tudo sem quebra de linhas também.

Se descobrirmos o porque as quebras de linhas estão sendo ignoradas, resolvemos a questão nos dois métodos.
MLALEX 15/08/2015 13:06:28
#450026
E então gente!!??? Alguma dica???
DS2T 15/08/2015 15:30:58
#450031
Resposta escolhida
Testa essa função:


function ImprimirTextBox() {
var content = document.getElementById([ô]<%=TextBox1.ClientID%>[ô]).innerHTML;
var shtm = [ô]<html><head><link href=[Ô]../css/style.css[Ô] rel=[Ô]stylesheet[Ô] type=[Ô]text/css[Ô] /></head><body>[ô] + content+ [ô]</body></html>[ô];
var w = window.open([Ô][Ô], [Ô][Ô], [Ô]scrollbars=yes,width=500,height=500,left=2000,top=0,screenx=1000,screeny=1000[Ô]);
w.document.write(shtm);
w.document.close();
w.focus();
w.print();
w.close();
}


Sobre seu código acima, tá meio difícil analisar. Quando for nesses casos, ao invés de usar StringBuilder pra construir tudo, usa literal string do C# com os parâmetros pro Format. Ajuda muito no entendimento do código.

Abraços!
MLALEX 15/08/2015 16:57:22
#450036
Olá DS2T. Já tinha encontrado esse código também pesquisando na internet, funciona iguais aos outros, mas com o mesmo problema, não respeita quebra de linha. O TextBox1 está assim:


  Protocolo: 00001	
Telefone: 00000
Data: 14/08/2015
Reclamante:
Cidade:
Distrito:
Bairro:
Rua:
Número:
Referência:
Vencimento:
Motivo:
OBS:


E na impressão sai assim:

  Protocolo: 00001 Telefone: 00000 Data: 14/08/2015 Reclamante:   Cidade:
Distrito: Bairro: Rua: Número: Referência: Vencimento: Motivo: OBS:


Acho que o problema tem haver com HTML encode, mas não tenho certeza e não sei como resolver.

Sabe alguma coisa a respeito??
DS2T 15/08/2015 17:38:54
#450038
Tente substituir os identificadores de breakline da literalstring por quebras de linha html...
Faz esse teste aí.
Troque a linha:

var content = document.getElementById([ô]<%=TextBox1.ClientID%>[ô]).innerHTML;

por:

var content = document.getElementById([ô]<%=TextBox1.ClientID%>[ô]).innerHTML.Replace(/(?:
||
)/g, [ô]<br />[ô]);

Eu programo mais desktop, por isso, isso aí pode tá errado hahaha... mas acho que tem lógica.

Abraços!
MLALEX 15/08/2015 18:05:53
#450044
VALEU CAMARADA!!!

Na verdade o que deu certo mesmo foi: var content = document.getElementById([Ô]<%=TextBox1.ClientID%>[Ô]).value.replace(/[
]/g, [ô]<br />[ô]);

MUITO OBRIGADO!!
Tópico encerrado , respostas não são mais permitidas