Problemas con este mensaje "Sys.ArgumentNullException:value cannot be null,parameter name:panelsCreated[2]" a la hora de publicar su aplicacion web en el IIS.
Solo basta con agregar a nuestro ScriptManager o ToolkitScriptManager según la versión de ajax que utilicen la propiedad ScriptMode = "Release" en vista diseño o en código en el Page_Load ScriptMode = Release;
y asunto arreglado.
Saludos cordiales!
jueves, 13 de diciembre de 2012
miércoles, 14 de noviembre de 2012
Crear reporte con ItextSharp en C# sin tabla
Veremos como crear un reporte PDF con ITextSharp en C# sin
el uso de tablas, esto dejara el texto lineal y abra que ir acomodándolo. Para
ello necesitamos importar la librería de ItextSharp a nuestro proyecto, podemos
descargarlo de la red o bien desde el mismo vs a partir de la versión 2010 con el
administrador de paquetes NuGet y luego agregar la referencia con using iTextSharp.text.
Primero empezamos declarando una variable de tipo document
en el cual le agregamos el tamaño de nuestro documento en este caso es tipo
carta, podemos elegir de otros tipos como A4, oficio, etc.
Document
doc = new Document(iTextSharp.text.PageSize.LETTER);
Definimos al autor y el tipo
de palabras claves al igual que los margenes
doc.AddAuthor("Gustavo
Ortiz Gamez");
doc.AddKeywords("pdf,
PdfWriter; Documento; iTextSharp");
doc.SetMargins(10.0f, 10.0f, 10.0f, 10f);
Aquí ocupamos una variable
de tipo string con la ruta y nombde del archivo
string rut = @"C:\doc.pdf";
Procedemos a crear el
documento en la ruta antes establecida
PdfWriter
wri = PdfWriter.GetInstance(doc, new FileStream(rut,
FileMode.Create));
Abrimos el documento a
ocupar
doc.Open();
Y empezamos
a escribir nuestro texto para lo cual declaramos una variable de tipo paragraph
en la cual vamos a definir el formato de nuestro texto, como alignment para
definir la justificacion, Font para el tipo y tamañao de letra, y con Add
agregamos el texto que vamos a ocupar
Paragraph paragraph = new Paragraph();
paragraph.Alignment = Element.ALIGN_RIGHT;
paragraph.Font = FontFactory.GetFont("Arial", 9);
paragraph.Add("Esto
es una prueba);
Y solo basta con agregar
esta variable paragraph a nuestro documento.
Para continuar agregando
texto es necesario ir agregando nuevos paragraph
doc.Add(paragraph);
Limpianos nuestro paragraph
por si queremos definir otro tipo de formato o tipo de letra
paragraph.Clear();
paragraph.Font = FontFactory.GetFont("Arial", 14, Font.BOLD);
paragraph.Add("Prueba PDF");
doc.Add(paragraph);
paragraph.Clear();
Para agregar saltos de linea
solo basta con agregar “\n” a nuestro documento
doc.Add(new Paragraph("\n"));
Podemos agregar imágenes a
nuestro documento con la siguiente instruccion
iTextSharp.text.Image
imgpfd = iTextSharp.text.Image.GetInstance(@"C:\images\imgprueba.jpg"); //Dirreccion a la imagen que se hace referencia
imgpfd.SetAbsolutePosition(50, 50); //Posicion en el eje carteciano de X y Y
imgpfd.ScaleAbsolute(200, 200);//Ancho y altura de la imagen
doc.Add(imgpfd); //
Agrega la imagen al documento
Una vez terminado de
escribir nuestro documento procedemos a cerrar el documento con:
doc.Close();
y con esto tendremos nuesotr
documento en la ruta que definimos al principio
Este es un pequeñop tip para
poder abrir nuestro documento desde la pagina web donde nos dara la opcion de
descargarlo
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.AddHeader("Content-Disposition", "attachment; filename=Nombrearchivo.pdf");
Response.ContentType = "application/pdf";
Response.TransmitFile(rut);
Response.End();
Con esto terminamos este pequeño tutorial, la
continuacion de este es como crear el reporte pero con una el uso de tablas,
que a mi me a funcionado mejor que estar escribiendo el texto plano.
Cualquier duda o comentario estoy a sus
ordenes.
Saludos cordiales!
jueves, 25 de octubre de 2012
Denegado el acceso al archivo del informe. Es posible que esté abierto en otro programa.
¿Les a parecido este mensaje una vez publicado su proyecto web en el servidor IIS "Denegado el acceso al archivo del informe. Es posible que esté abierto en otro programa."?
Para corregir este detalle necesitamos darlos los permisos de escritura sobre la carpeta Temp, que es donde se crea este archivo por default antes de mostrarse en nuestra pagina, y la carpeta se encuentra en C:\Windows\, solo basta con darle los permisos al usuario de IIS_IUSRS.
Saludos cordiales!
Para corregir este detalle necesitamos darlos los permisos de escritura sobre la carpeta Temp, que es donde se crea este archivo por default antes de mostrarse en nuestra pagina, y la carpeta se encuentra en C:\Windows\, solo basta con darle los permisos al usuario de IIS_IUSRS.
Saludos cordiales!
miércoles, 24 de octubre de 2012
Crear reporte con Sap Crystal Reports
El día de hoy
les traigo la forma de crear un reporte con Sap Crystal Reports desde c#, que
es una muy buena herramienta con los controles mejorados y muy vistosos. Pero
vallamos al grano como siempre.
Desde nuestro
Visual Studio en nuestro proyecto previamente creado, agregamos un nuevo
archivo de tipo de datos, el cual será nuestro DataSet, el cual contendrá la
estructura de nuestra tabla de BD que vamos a utilizar. Una vez abierto el
diseñador agregamos una TablaAdapter con el clic derecho de nuestro mouse o
desde el cuadro de herramientas (Imagen 1), una vez agregada la TablaAdapter,
procedemos a configurar nuestra conexión a BD, o bien seleccionamos la que se esté
utilizando en el proyecto.
Imagen
1.
viernes, 19 de octubre de 2012
Abrir un archivo (Excel, Word, PDF, Etc.) desde aspx
Les traigo otro código para
asp.net, que es como poder abrir un archivo desde c# .net, básicamente es
abrir, por que anteriormente con el IE6 lo mostraba en la misma pagina como la
hace Google con cierto archivos, ahora en las nuevas versiones de IE7 en
adelante lo da como descarga de archivo.
Vamos
a nuestro cometido.
Para
poder realizar este proceso, es necesario contar con la ruta del archivo y las
siguientes referencias a nuestro proyecto:
Abrir ventana emergente con javascript y ajax desde c#
Anteriormente publique un articulo llamado Abrir popup con JavaScript donde se abre el popup
utilizando javascript, con la función ya incrustada desde el lado del cliente.
Existen otras formas de poder realizar esto, una es escribir el código directo
en una variable y ejecutarlo con un response.write desde nuestra pagina aspx.cs
o aspx.vb, dependiendo del lenguaje.
Pues bien
ahora les traigo otra forma de lograrlo, dentro de una pagina que tiene
controles Ajax, si han utilizado Ajax en sus paginas web, habrán notado que no
se lleva muy bien con los scripts de javascript. Para ello existe una solución
de realizar el cometido.
Una pagina
que utiliza Ajax, necesita de un ScriptManager, esto nos impide ejecutar los códigos
de Ajax, y si lo hacemos desde un response.write, se ejecuta la acción pero la
pagina se desconfigura. Para ello existe la siguiente solución.
Dentro de la
clase ScriptManager, viene un método llamado
RegisterClientScriptBlock, con el cual podemos ejecutar nuestro window.open.
String
Clientscript = "window.open(‘pagina.aspx')";
ScriptManager.RegisterClientScriptBlock(this, this.GetType(),"newWindow", Clientscript, true);
Como podrán
darse cuenta si han ejecutado un response.write con la función de abrir una
ventana lleva antes del window.open la instrucción de que es script
<script type="text/javascript"><script>, en este
caso ya no lo lleva, ya que se especifica en el RegisterClientScriptBlock que
es una nueva ventana con el texto "newWindow".
Con este sencillo comando se ejecuta nuestro script y
no habrá problema con la pagina de que se llegue a cuatrapear.
Otra forma
de abrir una nueva ventana, sin necesidad de utilizar el response.write y la
página no tiene Ajax es con el ClientScript
String Clientscript = "<script>window.open('pagina.aspx"')</script>";
Me.ClientScript.RegisterStartupScript(this.GetType(),
"WOpen",
Clientscript,
true);
Se podrán dar cuenta que es similar pero aquí se
ejecuta dentro del cliente, y es el mismo efecto, no afecta para nada la
pagina, como lo aria un response.write y la instrucción es diferente al abrir
la ventana en vez de "newWindow"
ahora es "WOpen"
Sin mas por el momento espero les halla sigo util, ya saben si tienen dudas o comentarios no duden en publicarlo.
Saludos cordiales!
jueves, 18 de octubre de 2012
Crear excel desde asp, web, c#
Después de hace tiempo sin publicar
nada, por fin me llego la inspiración, mentira jeje, eh tenido algo de trabajo,
y adquiriendo nuevos conocimientos de los cuales estoy gusto a compartir
con ustedes, pues bien vamos al grano.
¿Se han topado con la necesidad de
crear un Excel desde web? si es así, supongo que han probado con interop la
vendita herramienta que nos da Microsoft, que si bien le e utilizado en varias ocasiones
en aplicaciones de escritorio mas que nada, donde no existe ningún problema,
pues bien al querer hacerlo nos topamos con muchos problemas de seguridad y configuración
que no nos lo permiten, bueno a mi en lo personal eh tratado de echar a andar
esa herramienta en un server 2008 sin éxito.
lunes, 16 de enero de 2012
Acceder a un control con JavaScript dentro de un ContentPlaceHolder
Uno de los problemas que enfrente a la hora de trabajar con paginas maestras, de querer validad un formulario dentro de un ContentPlaceHolder es obtener el Id del control.
como este ejemplo que normalmente ocupamos en nuestros códigos
Probando varios ejemplo lo intente hacerlo con el código que aparece en html de nuestra caja de texto
ctl00_ContentPlacePaginaMaestra_txtnombre
Una de las opciones en javascript es acceder con este nombre directamente
Aquí arriesgamos un poco nuestras validaciones ya que si cambiamos el nombre la pagina maestra afectaría nuestro código.
la manera mas sencilla es utilizando el Id de nuestro control con un ClientId para que nos lo reconosca
como este ejemplo que normalmente ocupamos en nuestros códigos
document.getElementById("txtnombre").value
ctl00_ContentPlacePaginaMaestra_txtnombre
Una de las opciones en javascript es acceder con este nombre directamente
document.getElementById('ctl00_ContentPlacePaginaMaestra_txtnombre').value
Aquí arriesgamos un poco nuestras validaciones ya que si cambiamos el nombre la pagina maestra afectaría nuestro código.
la manera mas sencilla es utilizando el Id de nuestro control con un ClientId para que nos lo reconosca
document.getElementById('<%=txtnombre.ClientID %>').value
Suscribirse a:
Entradas (Atom)