viernes, 26 de abril de 2013

Telerik



Para crear una ventana telerik en runtime:

1-Debemos agregar un radwindowsManager
2-

   RadWindow ventana = new RadWindow();
            ventana.ID = "myVentana";
            ventana.Height =300;
            ventana.Width = 200;

            ventana.ReloadOnShow = true;
            ventana.VisibleOnPageLoad = true;
            ventana.NavigateUrl = "ventana.aspx";
            ventana.DestroyOnClose = true;


            if (RadWindowManager1.Windows.Count>0)// para borrar las ventanas anteriores esto
//le permite una sola ventana
            {
                RadWindowManager1.Windows.Clear();
            }
            RadWindowManager1.DestroyOnClose = true;
            RadWindowManager1.Windows.Add(ventana);


Invocar un ventana Jquery desde radwindowsmanager


1- en un boton colocar este codigo:
 RadWindowManager1.RadAlert("Esto es un menaje", 330, 180, "Aviso", "nulo", "null");// el parametro nulo es una funcion en el archivo JSScript1.js


2- crear un archivo .js llamado JSSCript1 con la siguiente funcion:


function nulo(arg) {
    //  radalert("radalert returned the following result:

" + arg + "

", 350, 250, "Result");
}


3-agregar este archivo a la pagina en el aspx:



       

miércoles, 24 de abril de 2013

User-Defined Table Types


En esta entrada vamos a usar un  UDT para grabar  y actualizar registros de una tabla en SQL SERVER 2008, esto me permitirá solamente enviar un parámetro a un store procedure de tipo UDT con todo los campos basado en una estructura que enviaremos desde C#  o varios registros a la vez.

1-Veremos lo que necesitamos hacer en SQL SERVER, estos script debemos ejecutarlo y previamente debe tener al menos una base de datos ya creada.


--Creando la tabla en SQL SERVER
CREATE TABLE [datos](
[id] [numeric](18, 0) NOT NULL,
[nombre] [nvarchar](50) NULL,
[edad] [numeric](18, 0) NULL,
 CONSTRAINT [PK_datos] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO




/*
Creando el tipo de datos UDF llamado typeDatos  
*/
create type typeDatos as table
(
      id       numeric(18),
      nombre   nvarchar(50),
      edad     numeric(18,2)
)
go

/*
Creando el store procedure para grabar
*/
create procedure  usp_grabar_datos
 @datos   typeDatos readonly
as

insert into datos 
select * from @datos
go 
/*
Creando el store procedure para actualizar
*/
create procedure  usp_actualizar_datos
 @datos   typeDatos readonly
as
declare @id numeric,
@nombre nvarchar(20),
@edad numeric

select @id=id,@nombre=nombre,@edad=edad  from @datos
 update datos set
 edad=@edad,
 nombre=@nombre
 where id=@id
go


/*
Este procedimiento en sumamente util ya que usted puede en su aplicacion web en el datatable tener registros nuevos y existentes y simplemente insertara los nuevos y actualizara los existentes.
*/


alter procedure usp_Insertar_Actualizar_Datos
 @datos   typeDatos readonly
 as
    --Actualiza los registros que ya existe
    UPDATE  datos
    SET nombre = t.nombre,
    edad=t.edad
    FROM dbo.datos d
    JOIN @datos t on t.id = d.id

--Inserta los registros que no estan en la tabla de SQL SERVER
    INSERT INTO  datos
    SELECT  *
    FROM    @datos t
    WHERE    t.id not in(SELECT id FROM dbo.datos)
     
go

2-Luego debemos crear una clase para crear nuestra conexion a la base de datos y dataset. la clase se llamara: clDatos.cs


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;


 public static class clDatos
    {
        public static DataSet dt = new DataSet();
        public static DataRow fila;
        public static DataTable registro;



        public static void iniciar()
        {
            registro = new DataTable("datos");

            registro.Columns.Add("id", typeof(Int32));
            registro.Columns.Add("nombre", typeof(string));
            registro.Columns.Add("edad", typeof(Int32));


        }

        public static void agregar(Int32 id,string nombre, Int32 edad)
        {
            fila = registro.NewRow();
            fila["id"] = id;
            fila["nombre"] = nombre;
            fila["edad"] = edad;
            registro.Rows.Add(fila);

        }

    }

3-Luego de debemos crear una interface en .NET WEB, dentro de un formulario web en el div principal copiar este codigo:

debe crear tres textbox con los nombres de

txtID
txtNombre
txtEdad

         


4-Codigo que lleva la pagina en el archivo .cs:

  SqlConnection cn;
    DataTable registro=new DataTable();
    protected void Page_Load(object sender, EventArgs e)
    {
          cn = new SqlConnection("Data Source=.;Initial Catalog=demo;Persist Security Info=True;User ID=sa;Password=1234");
        if (!IsPostBack)
        {
            cn.Open();
            clDatos.iniciar();

        }
    }

    protected void btnActualizar_Click(object sender, EventArgs e)
    {
        cn.Open();
        SqlCommand cmdGrabar = new SqlCommand("usp_actualizar_datos", cn);
        cmdGrabar.CommandType = CommandType.StoredProcedure;


        SqlParameter tvpParam = cmdGrabar.Parameters.AddWithValue("@datos", clDatos.registro);
        tvpParam.SqlDbType = SqlDbType.Structured;
        cmdGrabar.ExecuteNonQuery();
    }
    protected void btnAgregar_Click(object sender, EventArgs e)
    {
        clDatos.agregar(Convert.ToInt32(txtID.Text), txtNombre.Text, Convert.ToInt32(txtEdad.Text));
    }
    protected void btnGrabar_Click(object sender, EventArgs e)
    {
        cn.Open();
        SqlCommand cmdGrabar = new SqlCommand("usp_grabar_datos", cn);
        cmdGrabar.CommandType = CommandType.StoredProcedure;


        SqlParameter tvpParam = cmdGrabar.Parameters.AddWithValue("@datos", clDatos.registro);
        tvpParam.SqlDbType = SqlDbType.Structured;
        cmdGrabar.ExecuteNonQuery();
    }