Foros del Web » Programación para mayores de 30 ;) » .NET »

Paginar DataGrid en C#

Estas en el tema de Paginar DataGrid en C# en el foro de .NET en Foros del Web. Hola amigos del Foro .Net, la verdad pido disculpas por el titulo (soy nuevo en .Net) lo malo es que tengo este problema desde ayer ...
  #1 (permalink)  
Antiguo 15/09/2004, 10:53
Avatar de shinblood  
Fecha de Ingreso: diciembre-2003
Ubicación: lima
Mensajes: 214
Antigüedad: 20 años, 4 meses
Puntos: 1
Paginar DataGrid en C#

Hola amigos del Foro .Net, la verdad pido disculpas por el titulo (soy nuevo en .Net) lo malo es que tengo este problema desde ayer y no le encuentro solucion a pesar que he consultado un monton de tutoriales. Tengo un DataGrid con el siguiente Code:

Código PHP:
using System;
using System.Data.SqlClient;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;


namespace prueba
{
    
/// <summary>
    /// Descripción breve de paginado.
    /// </summary>
    
public class paginado System.Web.UI.Page
    
{
        protected 
System.Data.DataSet dset= new DataSet();
        protected 
System.Web.UI.WebControls.DataGrid DataGrid1;
    
        private 
void Page_Load(object senderSystem.EventArgs e)
        {
            
            if( !
Page.IsPostBack )
            {
                
EnlazaDatos();

            }
                
        }
        private 
void EnlazaDatos()
        {
            
SqlConnection conexion =new SqlConnection(Global.DbString);
            
conexion.Open();
            
SqlCommand mySqlCommand  = new SqlCommand("SELECT productname,unitprice,unitsinstock FROM Products ORDER BY productname ASC"conexion);
            
SqlDataAdapter adapter= new SqlDataAdapter(mySqlCommand);
            
adapter.Fill(dset);
            
DataGrid1.DataSource=dset;
            
DataGrid1.DataBind();
            
adapter.Dispose();
            
mySqlCommand.Dispose();
            
conexion.Close();
        }
        private 
void DataGrid1_PageIndexChanged(object source,System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
        {    
            
DataGrid1.CurrentPageIndex e.NewPageIndex;
            
EnlazaDatos();
        }
        
        
#region Web Form Designer generated code
        
override protected void OnInit(EventArgs e)
        {
            
//
            // CODEGEN: llamada requerida por el Diseñador de Web Forms ASP.NET.
            //
            
InitializeComponent();
            
base.OnInit(e);
        }
        
        
/// <summary>
        /// Método necesario para admitir el Diseñador, no se puede modificar
        /// el contenido del método con el editor de código.
        /// </summary>
        
private void InitializeComponent()
        {    
            
this.Load += new System.EventHandler(this.Page_Load);

        }
        
#endregion
    
}


pero a pesar que hago click en los links de la paginado solo me muestra la primera pagina
__________________
saludos :adios:
  #2 (permalink)  
Antiguo 15/09/2004, 11:03
 
Fecha de Ingreso: abril-2003
Mensajes: 606
Antigüedad: 21 años
Puntos: 2
En ocasiones el Visual Studio no genera la suscripción al evento

Código:
        private void InitializeComponent() 
        {     
            this.Load += new System.EventHandler(this.Page_Load); 
            this.DataGrid1.PageIndexChanged += new DataGridPageChangedEventHandler(this.DataGridD1_PageIndexChanged);
        }
Creo que con eso debería funcionar
  #3 (permalink)  
Antiguo 15/09/2004, 11:11
Avatar de shinblood  
Fecha de Ingreso: diciembre-2003
Ubicación: lima
Mensajes: 214
Antigüedad: 20 años, 4 meses
Puntos: 1
gracias DotNetDeveloper , al fin pude salir de este lio como soy nuevo hay cosas que aun no entiendo....disculpen la rebundancia del tema

un saludo
__________________
saludos :adios:
  #4 (permalink)  
Antiguo 30/09/2004, 10:51
 
Fecha de Ingreso: agosto-2004
Mensajes: 9
Antigüedad: 19 años, 8 meses
Puntos: 0
Yo he probado ésto y sólo me muestra la primera página. El contenido del namespace es el siguiente:

public class _default1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid MyDataGrid;
protected System.Web.UI.WebControls.Label lblEnabled;
protected System.Web.UI.WebControls.Label lblCurrentIndex;
protected System.Web.UI.WebControls.Label lblPageCount;
protected System.Web.UI.WebControls.Label lblCustom;
protected System.Web.UI.WebControls.Label lblPageSize;
protected System.Web.UI.WebControls.Label lblVirtual;
//protected System.Web.UI.WebControls.DataGrid DataGrid1;
protected ComponentArt.Web.UI.Menu Menu1;

protected System.Data.DataSet dset= new DataSet();
protected System.Web.UI.WebControls.DataGrid DataGrid1;


private void Page_Load(object sender, System.EventArgs e)
{
// Introducir aquí el código de usuario para inicializar la página
if (!Page.IsPostBack)
EnlazaDatos();
}
private void EnlazaDatos()
{
OdbcConnection conexion;
OdbcCommand comando;
OdbcDataAdapter objDataAdapter;

//Comprueba que el usuario y password son correctos
AppSettingsReader rdr =new AppSettingsReader();
string strCadenaConexionBD = rdr.GetValue("ConexionBDASA",typeof(string)).ToStr ing();

conexion= new OdbcConnection();
conexion.ConnectionString=strCadenaConexionBD;
conexion.Open();

comando=new OdbcCommand();
comando.Connection=conexion;
comando.CommandText= "select terapia_id, terapia_descripcion from terapia order by terapia_id";

objDataAdapter = new OdbcDataAdapter(comando);
objDataAdapter.Fill(dset);

DataGrid1.DataSource=dset;
DataGrid1.DataBind();
objDataAdapter.Dispose();
comando.Dispose();
conexion.Close();
}

private void DataGrid1_PageIndexChanged(object source,System.Web.UI.WebControls.DataGridPageChang edEventArgs e)
{
DataGrid1.CurrentPageIndex = e.NewPageIndex;
EnlazaDatos();
}



#region Código generado por el Diseñador de Web Forms
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: llamada requerida por el Diseñador de Web Forms ASP.NET.
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// Método necesario para admitir el Diseñador. No se puede modificar
/// el contenido del método con el editor de código.
/// </summary>
private void InitializeComponent()
{
this.DataGrid1.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEvent Handler(this.DataGrid1_PageIndexChanged);
this.DataGrid1.SelectedIndexChanged += new System.EventHandler(this.DataGrid1_SelectedIndexCh anged);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

private void DataGrid1_SelectedIndexChanged(object sender, System.EventArgs e)
{

}


}


Lo he traceado. La primera pagina se ve bien. Pinchas en el enlace para ver la segunda y ves que, tras quedarse la ejecución sin entrar en el if del método "Page_Load" me muestra una página en blanco.
Puede alguien ayudarme?
¿Cómo puedo hacer para que en vez de tener que navegar por las páginas de resultados pinchando en el enlace imagen ">" pudiera hacerlo con las letras del abecedario al pie de la tabla de resultados para así ir a los resultados que empiecen por la letra que me interese?


Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:12.