Buscar este blog

viernes, 22 de noviembre de 2013

Añadir css embebidos en tus controles web(.net)

Hola, hoy les explicare como embeber un archivo css en tu control web que estés desarrollando, lo primero que hay que hacer es lo siguiente:

1. Modifica el archivo AssemblyInfo.cs y agrega esto:

[assembly: System.Web.UI.WebResource("CustomControls.Styles.GridStyles.css", "text/css"), PerformSubstitution = true)]

Donde CustomControls es tu proyecto y style tu carpeta donde tienes el css, prácticamente es ponerlo como se formaría un namespace.

2. Al archivo .css aplicale la propiedad de BuildAction a  Embedded Resource, para que se embeba en nuestra dll.

3. Ahora si, el código que necesitamos es el siguiente:


protected override void OnPreRender(EventArgs e) 
   {
        bool linkIncluded = false;
        foreach (Control c in Page.Header.Controls)
        {
            if (c.ID == "GridStyle")
            {
                linkIncluded = true;
            }
        }
        if (!linkIncluded)
        {
            HtmlGenericControl csslink = new HtmlGenericControl("link");
            csslink.ID = "GridStyle";
            csslink.Attributes.Add("href", Page.ClientScript.GetWebResourceUrl(this.GetType(), "CustomControls.Styles.GridStyles.css"));
            csslink.Attributes.Add("type", "text/css");
            csslink.Attributes.Add("rel", "stylesheet");
            Page.Header.Controls.Add(csslink);
        }
    }

4. Si quieres hacer una referencia a una imagen pues embeber la imagen y referenciarla de esta manera en tu css:

background: url('<%=WebResource("CustomControls.Styles.Cross.png")%>') no-repeat 95% 50%;

Como ven esto es muy facil de implementar y espero que les sea de utilidad.

lunes, 4 de marzo de 2013

Pasar XML a stored procedure en SQLServer 2005 o superior

Hola, hace tiempo vimos como pasar un XML a un sp en SQL2005, hoy les traigo una forma mas eficiente de pasar un xml por parámetro que funciona en 2005 o superior.

La diferencia principal radica que ahora si mandamos un tipo de datos XML propio del manejador de base de datos.
Ejemplo:


CREATE PROC spPrueba
@sXML XML
AS
BEGIN 
-- Logica
END


Si mal no recuerdo el tipo de dato XML esta disponible a partir de la version 2005 de SQLServer y por lo tanto pueden aplicar la lectura de ese xml de la siguiente forma:



SELECT t.value('./@Clave','INT'),
t.value('./@Descripcion','VARCHAR(30)')
FROM @sXML.nodes('//row') x(t)


Donde @sXML es nuestro parametro, y "row" es nuestro nodo de cada elemento de nuestro xml, y por medio de "t" y la funcion "value" obtenemos nuestro valor de cada propiedad de nuestro nodo.

Les dejo aquí un ejemplo completo:


CREATE PROC spPrueba
@sXML XML
AS
BEGIN 
SELECT t.value('./@Clave','INT'),
t.value('./@Descripcion','VARCHAR(30)')
FROM @sXML.nodes('//row') x(t) 
END

go

--Ejecuto sp
EXEC dbo.spPrueba @sXML = '<row Clave="1" Descripcion="Dato 1" />
<row Clave="2" Descripcion="Dato 2" />' -- xml

go

DROP PROC spPrueba

De igual manera como lo hicimos en el ejemplo pasado podrian ejecutar un insert select para guardar directo en su tabla o en unta tabla temporal para procesar la información.

Espero que les sea de utilidad....
---------------------------------------
Lo que se puede imaginar... se puede programar

Nota: Articulo anterior: http://ganda-csharp.blogspot.mx/2012/07/pasar-un-xml-por-parametro-un-stored.html