none
Servicio web Listar en Listview un procedimiento almacenado de SQL RRS feed

  • Pregunta

  • Hola amigos que tal, quisiera que me ayuden con esta consulta, tengo un listview en un webform aspx, y lo programo con CSharp, ademas estoy trabajando con Servicios WEB, la pregunta en si es, como hago para poder cargar los datos de una consulta de un procedimiento almacenado de SQL en el ListView, tengo estos datos en mi clase y en mi asmx, ademas de la tabla y el sp de sql, los dejo para que me puedan ayudar, muchas gracias.

    En mi webform tengo un listbox pero no se como cargar la consulta que hago con estos codigos:

    Tabla SQL

    CREATE TABLE Mensajes
    (
    IdMensaje INT IDENTITY (1,1) PRIMARY KEY NOT NULL,
    Hora DATETIME,
    Usuario1 VARCHAR (30) NOT NULL,
    Usuario2 VARCHAR (30) NOT NULL,
    Texto VARCHAR (200) NOT NULL
    )

    Procedimiento almacednado:

    CREATE PROCEDURE sp_listarChat
    @Usuario1 VARCHAR (30),
    @Usuario2 VARCHAR (30) 
    AS
    BEGIN
    SELECT Usuario1 AS [De], Usuario2 AS [Para], CONCAT (Texto, ' ',Hora) AS [Mensaje] FROM Mensajes
    WHERE Usuario1=@Usuario1 AND Usuario2=@Usuario2 OR Usuario1=@Usuario2 AND Usuario2=@Usuario1
    END
    GO

    Codigo del Servicio

        [WebMethod(Description = "ListarChat")]
        public DataSet listarchat(string U1, string U2)
        {
            ChatRoom chat = new ChatRoom();
            chat.usuario1= U1;
            chat.usuario2 = U2;
            return chat.ListarChat();
        }

    Codigo de la Clase:

            public DataSet ListarChat()
            {
                SqlCommand cmd = new SqlCommand("sp_listarChat", conexion);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@Usuario1",usuario1);
                cmd.Parameters.AddWithValue("@Usuario2",usuario2 );
                SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                DataSet data = new DataSet();
                adapter.Fill(data);
                return data;
            }


    Juan Fernando

    lunes, 18 de diciembre de 2017 0:37

Respuestas

  • Parece bastante directo. Ya tienes en el webservice un procedimiento que te devuelve los datos del procedimiento dentro de un DataSet. En la página donde lo consumas, simplemente toma ese dataset tal como te lo devuelve el proxy del servicio, y asígnalo al DataSource del ListView.

    listView1.DataSource = tuProxyDeServicio.listarchat(..., ...);

    listView1.DataBind();

    Si el ListView tiene configurados en diseño los bindings para los campos que te devuelve el procedimiento, deberían salir sin más en pantalla.

    lunes, 18 de diciembre de 2017 7:07
    Moderador