none
Ayuda con GridView sin usar SqlDataSource RRS feed

  • Pregunta

  • Hola, un saludo a todo el foro.

    Tengo un problema en un formulario Web (uso VS2005 y Framework 2.0) en el que he incluido un GridView que lleno a partir de un DataTable que se genera con el resultado de un StoredProcedure de SqlServer.

    El formulario tiene unos campos que hacen de filtro para parametrizar la búsqueda de registros y un botón "Buscar" que es quien genera la consulta a la BBDD y rellena el GridView a partir del DataTable que recibe.

    Hasta aqui va bien, el problema es al intentar paginar, al pulsar en el link de la página 2 por ejemplo, el GridView desaparece y no me muestra nada.

    El código del botón es el siguiente:

    protected void btnBuscar_Click(object sender, EventArgs e)
    {
        protected DataTable dtBusqueda = new DataTable();
       
        dtSearch = Business.UserSystem.FindUsers(param1, param2, param3);
        if (dtSearch.Rows.Count > 0)
            {
                gvUsers.DataSource = dtSearch;
                gvUsers.DataBind();
            }

    }

    El código del evento PageIndexChanging es el siguiente:

    protected void gvUsers_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
            gvUsers.PageIndex = e.NewPageIndex;
            gvUsers.DataBind();
    }

    También utilizo este evento para que al pasar el cursor por encima de un registro cambie el color, lo incluyo como información aunque no creo que tenga que ver con el problema:

    protected void gvUsers_RowDataBound(object sender, GridViewRowEventArgs e)
    {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='#f3f6e5';this.style.cursor='hand'");
                e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='White'");
            }

    }

    Gracias anticipadas por la ayuda que me puedan prestar, ya que es un tema, que por cuestiones de trabajo me urge bastante.




    domingo, 17 de agosto de 2008 19:37

Todas las respuestas

  • Hola:

     

    Intenta utilizando el método PageIndexChanged de tu drigview.

    Algo así:

     

    En tu página aspx añade la operación a tu gridview:

     

    Code Snippet

    < P>

    <asp:gridview

    ...

    allowpaging="true"

    onpageindexchanged="gvUsers_PageIndexChanged">

     

     

     

     

    y en tu code behind agregas el método:

     

    Code Snippet

    void gvUsers_PageIndexChanged(Object sender, EventsArgs e)

    {

    gvUsers.PageIndex = e.NewPageIndex;

    gvUsers.DataBind();

    }

     

     

     

    Espero te sirva.

    Saludos.

     

    lunes, 18 de agosto de 2008 19:54