Entrada destacada

Solucion error AjaxControlToolkit requires ASP.NET Ajax 4.0 scripts

Ajax Control Toolkit en ASP.NET Ajax Library Detalles de la Versión :(AspNetAjaxLibraryBeta0911.zip application, 6490K, uploaded Nov 18 ...

Mostrando entradas con la etiqueta C#. Mostrar todas las entradas
Mostrando entradas con la etiqueta C#. Mostrar todas las entradas

lunes, 14 de diciembre de 2015

Como agregar un boton “Share” o “Compartir” de Facebook en ASP.NET MVC

El botón “Compartir” o “Share” permite a los visitantes de tu sitio web agregar un mensaje personalizado o enlaces para compartir a través de Facebook

Para implementarlo en nuestras páginas de ASP.NET MVC, lo primero que debemos hacer es dirigirnos a Facebook for Developers en la dirección https://developers.facebook.com/docs/ y dar clic en el link “Social Plugins” (pueden ir directamente dando clic a este link https://developers.facebook.com/docs/plugins?locale=en_EN ) luego en el menú de la izquierda que se nos mostrará, damos clic en “Share Button” como se muestra a continuación:

Luego, si no hemos iniciado sesión, nos pedirá que lo hagamos para poder continuar:

Tras iniciar sesión, volvemos a “Share Button” e ingresamos la siguiente información en el “Share Button Configurator”:

1.- URL to Like: La URL de la página en la que desea agregar el “Compartir” o “Share”.

2.- Layout: que por defecto es “button_count”, pero puede ser cambiado por:

Dejaré el button_count

Luego de ingresar esta información damos clic en "Get Code" para obtener el código generado.

NOTA: Si no se te genera el segundo bloque de código, revisa el post anterior “Como agregar un boton “Like” o “Me gusta” de Facebook en ASP.NET MVC” en donde explico cual puede ser el error y su solución.

El primer bloque de código es un javascript que debe colocarse justo después de la etiqueta <Body>, y el segundo bloque de código colocarlo en donde desea que el plugin “Compartir” o “Share” aparezca en tu página web. Para nuestro ejemplo el primer bloque lo dejaré en la plantilla ”_Layout” que se encuentra en Views/Shared.

NOTA: Para los que hicieron alguno de los dos Post anteriores “Como implementar el Facebook Comments Plugin para agregar comentarios en ASP.NET MVC”, o “Como agregar un boton “Like” o “Me gusta” de Facebook en ASP.NET MVC” no deben colocarlo nuevamente, ya que es el mismo:

Y el segundo bloque lo pondré al final de todo el código de la vista "Index" que se encuentra en Views/Home. Voy a modificar el atributo “data-href” para indicar la dirección precisa de la vista que es http://localhost:1113/Home/Index.

Ahora ejecutaré la aplicación para ver el resultado.

Podemos ver que se ha agregado el plugin bajo el plugin de “Me gusta”. Voy a iniciar sesión en Facebook y dar clic en “Compartir” para comprobar que funciona bien.

Bueno, esto sería todo por ahora. Espero les haya gustado y les sea de utilidad.

Saludos, Toby.

sábado, 12 de diciembre de 2015

Como implementar el Facebook Comments Plugin para agregar comentarios en ASP.NET MVC

El plugin de Comentarios permite a las personas hacer comentarios sobre el contenido que visitan en su sitio web, en donde utilizan sus propias cuentas de Facebook.

Para implementarlo en nuestras páginas de ASP.NET MVC, lo primero que debemos hacer es dirigirnos a Facebook for Developers en la dirección https://developers.facebook.com/docs/ y dar clic en el link “Social Plugins” (pueden ir directamente dando clic a este link https://developers.facebook.com/docs/plugins?locale=es_ES ) luego en el menú de la izquierda que se nos mostrará, damos clic en “Comments” como se muestra a continuación:

Luego, si no hemos iniciado sesión, nos pedirá que lo hagamos para poder continuar:

Tras iniciar sesión, volvemos a “Comments” y en “Comments Plugin Code Generator” ingresamos la siguiente información:

1.- URL to comment on: La URL de la página en la que desea agregar el cuadro de comentario.

2.- Width: El tamaño de la caja de comentario expresado en píxeles.

3.- Number of Posts: El la cantidad de mensajes que se verán a la vez en una página.

Luego de ingresar esta información damos clic en "Get Code" para obtener el código generado.

El primer bloque de código es un javascript que debe colocarse justo después de la etiqueta <body>, y el segundo bloque de código colocarlo en donde desea que el plugin de la caja de comentario aparezca en su página web.

Para nuestro ejemplo el primer bloque lo dejaré en la plantilla ”_Layout” que se encuentra en Views/Shared:

Y el segundo bloque lo pondré en la vista Index que se encuentra en Views/Home al final de todo el código. Voy a modificar el atributo “data-href” para indicar la dirección precisa de la vista que es http://localhost:1113/Home/Index.

Ahora ejecutaré la aplicación para ver el resultado.

Podemos ver que se ha agregado el plugin y tiene 0 comentarios. Voy a iniciar sesión en Facebook y agregar un comentario para comprobar que funciona bien.

Y como todo ha ido bien, aquí aparece el comentario:

El generador de código para nuestro plugin de comentarios no incluye todas las opciones, así que también podemos agregar los siguientes ajustes en el <div class="fb-comments" data-href="http://localhost:1113/home/index" data-width="250" data-numposts="5"></div>:

Si se quiere agregar el plugin en más de una página, debe modificar el atributo “data-href” para indicar la dirección exacta como ya lo he indicado antes. Si necesitas cambiar el tamaño del plugin debe modificar “data-width”.

Bueno, esto sería todo por ahora. En el siguiente post, colocaremos un botón “Like”.

Espero les haya gustado y les sea de utilidad.

Saludos, Toby.

viernes, 27 de noviembre de 2015

Error: El lector de datos es incompatible... Un miembro del tipo... no tiene una columna correspondiente en el lector de datos con el mismo nombre.

"El lector de datos es incompatible con el 'Data.Cliente' especificado. Un miembro del tipo, 'CodigoCliente', no tiene una columna correspondiente en el lector de datos con el mismo nombre."

"The data reader is incompatible with the 'Data.Cliente' specified. A member of the kind, 'CodigoCliente', has no corresponding column in the data reader with the same name."

Este error se debe en el ejemplo anterior a que el procedimiento almacenado no retorna una columna con el mismo nombre de campo que tiene la clase Cliente. El valor retornado es codigo_cliente y en la clase Cliente es CodigoCliente.

Esto se soluciona creando un alias a todos los campos que lo necesiten y con esto ya no tendriamos el problema

Espero que esto solucione sus problemas. Toby.

domingo, 21 de febrero de 2010

Asignación implícita de tipos en Visual C#

En ocasiones nos podemos ver enfrentados a la problemática de no saber de qué tipo debemos declarar una variable, parece raro, pero no lo es y te diré porque. Primero revisemos el siguiente código:

protected void Button1_Click(object sender, EventArgs e)
        {
            Int32 departmentID = Convert.ToInt32(departmentList.SelectedValue);

            var courseInfo = from c in schoolContext.Course
                             where c.Department.DepartmentID == departmentID
                             select new
                             {
                                 CourseID = c.CourseID,
                                 CourseTitle = c.Title,
                                 CourseCredits = c.Credits
                             };
            
            foreach (var course in courseInfo)
            {
                Response.Write("<br>ID: " + course.CourseID + "<br>Title:" + course.CourseTitle + "<br>Credits:" + course.CourseCredits);
            }
        }

El resultado de courseInfo es una colección de tipos anónimos y solamente el compilador puede tener acceso al nombre de ese tipo y es aquí entonces en donde usaremos var y lógicamente la variable course en foreach también debe tener tipo implícito.

Ahora si revisamos este segundo ejemplo, inmediatamente podemos deducir que el tipo de la variable courseInfo para su resultado es IEnumerable, pero si usamos var también estará bien. La variable course en foreach también la definimos como string.

protected void Button2_Click(object sender, EventArgs e)
        {
            string[] Courses = { "Ingenieria", "Ingles", "Economia", "Matematicas" };
            IEnumerable<string> courseInfo = from name in Courses
                              where name[0] == 'I'
                              select name;

            foreach (string course in courseInfo)
            {
                Response.Write("<br>Course :" + course);
            }
        }

Entonces en resumen, a las variables locales se les puede asignar un "tipo" deducido var en lugar de un tipo explícito. La palabra clave var indica al compilador que deduzca el tipo de la variable a partir de la expresión que se encuentra en el lado derecho de la instrucción de inicialización. El tipo deducido puede ser un tipo integrado, un tipo anónimo, un tipo definido por el usuario o un tipo definido en la biblioteca de clases de .NET Framework.

Saludos, Toby

viernes, 19 de febrero de 2010

Como usar ViewState en ASP.NET con C#

El ViewState nos permite almacenar información de estado (la información se serializa en XML y luego se codifican en Base64) directamente en las páginas Web ASP.NET entre devoluciones de datos o Post Back. El PostBack es un reenvío de los datos del formulario de vuelta al servidor, el cual puede ser provocado por la acción de un evento click de un botón o el cambio de selección de un combobox, etc. Cuando se procesa la página, se codifica el estado actual de la página y de los controles, y la cadena que se obtiene se guarda en la página en forma de campo oculto, por lo tanto se pueden realizar cambios en el estado hasta el evento PreRenderComplete. Cuando la página se represente en el explorador, no se guardarán los cambios en el ViewState.

El ViewState proporciona información de estado para una página específica ASP.NET. Si se necesita utilizar esa información en más de una página o si se desea que la información permanezca para todas las visitas al sitio Web, se debe utilizar otro método para mantener el estado, como por ejemplo, estado de aplicación, estado de sesión o personalización.

Ya sabemos que el ViewState nos permite almacenar información, pero ¿qué tipo de información se puede almacenar?

Se puede almacenar objetos de tipo Cadenas, Enteros, Booleanos, Array, ArrayList, Tablas Hash, Convertidores de tipos personalizados y además puede almacenar otros tipos de datos en donde la clase debe compilarse con el atributo Serializable para que el ViewState pueda serializarlos en formato XML.

Como ya indiqué antes, la información del ViewState se serializa en XML y luego se codifica en Base64, lo cual en ocasiones nos puede generar grandes cantidades de información que puede afectar al rendimiento de la página y nos puede generar problemas con algunos proxy y firewall, por lo tanto, es recomendable probar el rendimiento de las páginas y si es necesario también deshabilitar el ViewState para los controles de datos como el GridView, DataList, Repeater, etc que pueden generar campos ocultos de gran tamaño.

Si se nos presentará el problema de mucha cantidad de datos almacenados en la propiedad ViewState y excede el valor especificado en la propiedad de la página MaxPageStateFieldLength, la página divide el ViewState en varios campos ocultos para reducir el tamaño de cada campo y evitando así ser rechazados por el firewall.

Ahora, otra solución a este problema es tratar de minimizar este traslado de información entre cliente y servidor no persistiendo el ViewState en un campo oculto de la página, sino que en otro lugar como por ejemplo en la memoria del servidor (siempre y cuando tengamos buenos servidores y se nos permita hacerlo) y para eso tenemos el SessionPageStatePersister. Para ello lo único que hay que hacer es sobreescribir la propiedad PageStatePesister de la página de modo que devuelva una referencia a un objeto de la clase que acabamos de mencionar, y eso se hace de la siguiente manera:

protected override PageStatePersister PageStatePersister
{
   get
   {
       return new SessionPageStatePersister(this);
   }
}

Si miras el código fuente de la página, notaras que la cantidad de información a disminuido considerablemente.

También podemos comprimir (System.IO.Compression) la información de los campos ocultos, pero eso es un tema que hay que tratar más en detalle en otra oportunidad, por mientras basta con que sepas que se puede hacer.

Entonces, en resumen tenemos que ViewState nos brinda las siguientes ventajas:

  • No se requieren recursos del servidor: Está incluido en una estructura dentro del código de la página.
  • Implementación sencilla: No requiere que se utilice una programación personalizada. Se habilita de forma predeterminada para mantener los datos de estado en los controles.
  • Características de seguridad mejorada: Los valores están fragmentados, comprimidos y codificados para implementaciones de Unicode, por lo que son más seguros que los campos ocultos.

Y las desventajas de utilizar el ViewState son:

  • Consideraciones sobre el rendimiento: Dado que el ViewState se almacena en la propia página, el almacenamiento de valores de gran tamaño puede hacer que la página se muestre y se envíe de forma más lenta para los usuarios. Esto es especialmente relevante para los dispositivos móviles, donde el ancho de banda constituye a menudo una limitación.
  • Limitaciones de dispositivos: Los dispositivos móviles pueden carecer de una capacidad de memoria suficiente para almacenar una gran cantidad de datos.
  • Posibles riesgos de seguridad: El ViewState se almacena en uno o varios campos ocultos de la página. Aunque se almacenan los datos fragmentados, se pueden ver y manipular si se obtiene acceso al código fuente de la página.

Como ya se señaló anteriormente, la información de un campo oculto de ViewState puede ser vista si se obtiene acceso al código fuente de la página, lo que nos puede generar un problema de seguridad si los datos son de cierta importancia, así que para aminorar este problema, se puede cifrar el ViewState cambiando el atributo viewStateEncryptionMode en la directiva @ Page al valor “Always”.

Creo que ya es suficiente con esta información, ahora pasemos a algo práctico. Lo primero que debemos saber es que para utilizar la propiedad ViewState, es que la página Web ASP.NET debe tener un elemento de formulario de servidor, ósea un Form:

<form id="form1" runat="server">
   ...
</form>

Acá les dejo el código de un ejemplo muy sencillo. Se trata de generar un arreglo con valores el cual se guarda en el ViewState y por cada envío de la página se incrementan lo valores de acuerdo al último valor generado, nada de otro mundo, pero lo importante de esto es que vean como se guarda la información y como la podemos recuperar.

Default.aspx

<%@ Page Language="C#" AutoEventWireup="true" ViewStateEncryptionMode="Always" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    </head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="Button1" runat="server" Text="Enviar P&aacute;gina" />
    </div>
    <br />
    <div>
        <asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" 
            GridLines="None">
            <RowStyle BackColor="#EFF3FB" />
            <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
            <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
            <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
            <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
            <EditRowStyle BackColor="#2461BF" />
            <AlternatingRowStyle BackColor="White" />
        </asp:GridView>
    </div>    
    </form>
</body>
</html>

Default.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using System.Collections;   //para el ArrayList

public partial class _Default : System.Web.UI.Page 
{
    private ArrayList ArregloDeValores;
    private int UltimoValor;

    //protected override PageStatePersister PageStatePersister
    //{
    //    get
    //    {
    //        return new SessionPageStatePersister(this);
    //    }
    //}

    protected void Page_Load(object sender, EventArgs e)
    {
        //Si se intenta obtener un valor que no existe en el ViewState, no se iniciará ninguna excepción,         //por lo tanto es mejor asegurarse de que el valor existe, por lo tanto es recomendable primero 
        //comprobar la existencia del objeto
        if (ViewState["ARREGLO"] != null)
        {   //  rescato los ultimos valores guardados en ViewState
            ArregloDeValores = (ArrayList)ViewState["ARREGLO"];
            UltimoValor = Convert.ToInt32(ViewState["ULTIMO"]);
            
            for (int i = 0; i < 100; i++)
            {
                ArregloDeValores[i] = UltimoValor + i;
            }

            ViewState.Add("ARREGLO", ArregloDeValores); //  Guardo el arreglo en ViewState
            //ViewState["ARREGLO"] = ArregloDeValores;  //  También puedo guardar el arreglo así
            
            GridView1.DataSource = ArregloDeValores;
            GridView1.DataBind();
        }
        else
        {
            UltimoValor = 100;
            ArregloDeValores = NuevoArreglo(UltimoValor);   //  La primera vez crea el arreglo
            ViewState.Add("ARREGLO", ArregloDeValores);     //  Guardo el arreglo en ViewState
            GridView1.DataSource = ArregloDeValores;
            GridView1.DataBind();
        }
    }
 
    protected void Page_PreRenderComplete(object sender, EventArgs e)
    {
        //Se pueden realizar cambios en el ViewState hasta el evento PreRenderComplete.
        //Después del evento cuando la página se represente en el explorador, no se guardarán los 
        //cambios realizados en el ViewState.
        
        //ViewState.Add("ULTIMO", Convert.ToInt32(ViewState["ULTIMO"]) + 100);Puedo asignar de ambas formas
        ViewState["ULTIMO"] = Convert.ToInt32(ViewState["ULTIMO"]) + 100;
    }

    private ArrayList NuevoArreglo(int Ultimo)
    {
        ArrayList miArreglo = new ArrayList(100);
        for (int i = 0; i < Ultimo; i++)
        {
            miArreglo.Add(i);
        }
        return miArreglo;
    }
}

No olviden de revisar el código fuente resultante de la página y hacer pruebas con el ViewStateEncryptionMode spara ver la información codificada en Base64 encriptada.

Prueba también quitanto los comentaríos a SessionPageStatePersister y si miras el código fuente de la página, notaras que la cantidad de información a disminuido considerablemente de esto:


A tan solo esto:

Es todo por hoy, espero les sea de ayuda.

Saludos Toby

sábado, 30 de enero de 2010

Paso de parámetros por Valor o por Referencia (Ref, Out) en C#

Por Referencia

Una variable de tipo referencia no contiene directamente los datos, contiene una referencia a ellos. El paso de parámetros por referencia permite a los miembros de funciones, métodos, propiedades, indizadores, operadores y constructores, cambiar el valor de los parámetros y hacer que ese cambio persista.

Para pasar un parámetro por referencia, se debe usar una de las palabras clave Ref u Out. Por ejemplo:


static void Funcion1(Ref int dato)
{
    // codigo...
}
.
static void Funcion2(Out int dato)
{
    // codigo...
}

Para pasar un argumento a un parámetro Ref, primero debe inicializarse. Esto es diferente de Out, cuyo argumento no tiene que inicializarse explícitamente antes de pasarlo.

Aunque Ref y Out se tratan de manera diferente en tiempo de ejecución, se tratan de la misma manera en tiempo de compilación. Por consiguiente no se pueden sobrecargar los métodos si un método toma un argumento Ref y el otro toma un argumento Out.

El siguiente ejemplo muestra como trabajar con Ref:


class EjemploRef
{
    static void Funcion1(Ref int dato)
    {
        dato = 3;
    }
    static void Main()
    {
        int valor = 0; // Es necesario inicializar la variable
        Funcion1(Ref valor); // Variable pasada por referencia
        System.Console.WriteLine("El valor es: {0}", valor); // valor a cambiado a 3
    }
}

Como se dijo anteriormente, Out no requiere que se inicialice la variable antes de pasarla. Al utilizar un parámetro Out, la definición de método y el método de llamada deben utilizar explícitamente la palabra clave out.

El siguiente ejemplo muestra como trabajar con Out:


class EjemploOut
{
    static void Funcion2(Out int dato)
    {
        dato = 3;
    }
    static void Main()
    {
        int valor; // No es necesario inicializar la variable
        Funcion2(Out valor); // Variable pasada por referencia
        System.Console.WriteLine("El valor es: {0}", valor); // valor a cambiado a 3
    }
}

Por Valor

Una variable de tipo de valor contiene directamente los datos, a diferencia de una variable de tipo de referencia, que contiene una referencia a los datos. Por lo tanto, pasar una variable de tipo de valor a un método significa pasar una copia de la variable al método. Cualquier cambio en el parámetro que se produzca dentro del método no afectará a los datos originales almacenados en la variable.

El siguiente ejemplo muestra como trabajar pasando parámetros por valor:


class EjemploVal
{
    static void Funcion3(int dato)
    {
        dato = 3;
    }
    static void Main()
    {
        int valor = 0; // Variable inicializada en 0
        Funcion3(valor); // Variable pasada por valor
        System.Console.WriteLine("El valor es: {0}", valor); // valor sigue siendo 0
    }
}

Como pueden observar, la variable valor es inicializada en cero. Cuando se invoca a la Funcion3, el contenido de valor se copia en el parámetro dato, el cual se cambia dentro del método. Sin embargo, en Main, el valor de la variable valor es el mismo, antes y después de llamar al método Funcion3, es decir, el cambio que se produce dentro del método sólo afecta a la variable local dato.

Tal vez en ocaciones al usar el out tengan los siguientes errores:

Error del compilador CS0269
"Uso del parámetro out sin asignar 'parámetro'"

Error del compilador CS0177
"Es necesario asignar el parámetro 'parámetro' out antes de que el control abandone el método actual"

Bueno, esto se debe a que el compilador no pudo comprobar que al parámetro out se le hubiera asignado a un valor antes de utilizarlo, es decir, no se asignó un valor a un parámetro marcado con la palabra clave out en el cuerpo del método. Pero aquí se nos crearía un problema si lo que deseamos es primero leer el valor antes de cambiarlo, por lo tanto en estos casos no nos va a servir el uso de out, entonces la solución es utilizar un parámetro ref en su lugar.

Si necesitan más información, visiten la fuente: http://msdn.microsoft.com


Espero les sea de ayuda.

Saludos, Toby

miércoles, 27 de enero de 2010

Cuando usar Int32.Parse vs Convert.ToInt32 en C#

Int32.Parse lo vamos a utilizar cuando estamos completamente seguros que el texto corresponde a un valor numerico, por ejemplo, si tengo que convertir un valor proveniente de una caja de texto a un entero y hemos limitado a que sólo se ingresen números, no vamos a tener problemas con Int32.Parse.

Pero si el valor proviene de una base de datos, puede darse el caso que el valor que recibamos sea nulo, con lo cual obtendríamos una excepción por lo tanto vamos a tener que hacer try{} catch{}, entonces para evitarnos este problema usamos Convert.ToInt32, que nos devolvera un cero cuando nuestro valor a convertir sea Null.

Saludos, Toby

viernes, 22 de enero de 2010

Usar IsPostBack en ASP.NET

IsPostBack nos entrega un valor que indica si la página se está cargando como respuesta a un valor devuelto por el cliente, o si es la primera vez que se obtiene acceso a ella.

La forma de usar en Visual Basic es la siguiente:

Sub Page_Load
    If Not IsPostBack
        
    End If
End Sub

Y para C# sería así:

private void Page_Load()
{
    if (!IsPostBack)
    {
        
    }
}

Ahora quizás te preguntes ¿y cuando será bueno usar el IsPostBack?

La respuesta es simple, toda vez que no sea necesario ejecutar un código producto de un PostBack (un reenvio de los datos del formulario de vuelta al servidor) el cual puede ser provocado por la accion de un evento click de un boton o el cambio de selección de un combobox.

Por ejemplo, cuando cargas una pagina web y llenas una lista con información que rescatas de una base de datos, no es necesario que consultes la base de datos todas las veces que se hace el PostBack, ya que basta solo con la primera carga.

Saludos, Toby.

lunes, 19 de enero de 2009

Consumir Web Services con C#

Hola a todos. Hoy lo que haremos será consumir el Web Services de Indicadores financieros utilizando Visual Studio 2005 y comprobaremos lo sencillo que resulta. Lo primero será crear un nuevo proyecto Web, seleccionamos C#, le damos un nombre (yo le he colocado “WSIndicadores”) y guardamos.



Ahora vamos al “Solution Explorer” y dando clic derecho sobre “WSIndicadores” agregamos una “Web Reference” tal como lo indica la imagen.



Ahora colocamos la dirección del Web Services que consumiremos, que para nuestro ejemplo será el de indicadores financieros del sitio desachile.com. La dirección es la siguiente: http://www.desachile.com/webservice.asmx. Luego de hacer clic en “Go” se nos mostrarán los servicios disponibles.



Damos un nombre en “Web referente name”, en mi caso he colocado “desachile_Indicadores” y pinchamos sobre el botón “Add Reference”.



Ahora que ya tenemos la referencia al servicio, ósea nuestro Proxy local, es posible instanciarlo colocando lo siguiente:


using desachile_Indicadores;

Agreguemos un “Button” que llamaremos Button1 y un “GridView” que llamaremos GridView1.



Dependiendo de lo que queramos realizar con los indicadores, es como lo vamos trabajar. En mi caso yo solo quiero mostrar el resultado en la grilla de datos, cuando consulto por los indicadores del 02 de enero del 2009.


Aquí el código completo en C#.


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 desachile_Indicadores;

public partial class _Default : System.Web.UI.Page
{
protected void Button1_Click(object sender, EventArgs e)
{
Servicios Indi = new Servicios();
DataSet Ds = Indi.Indicadores("02", "01", "2009");
GridView1.DataSource = Ds;
GridView1.DataBind();
}
}

El resultado que obtendremos será el siguiente:



Resumiendo lo visto en esta publicación, he querido mostrarles la conexión a un Web Services distinto al tradicional “Hola Mundo” que encontramos en la mayoría de los sitios Web, tratando de hacerlo de la forma más rápida y sencilla posible, es decir, sin aburrirlos con la parte teórica y las definiciones que las pueden encontrar en cualquier libro.


Espero les haya gustado

Saludos, Toby.

Entradas populares