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

No consigo hacer un DataGrid paginado alfabeticamente

Estas en el tema de No consigo hacer un DataGrid paginado alfabeticamente en el foro de .NET en Foros del Web. Hola, soy nuevo en esto de .net y estoy buscando información acerca de como mostar en c# un datagrid paginado alfabeticamente, es decir, que los ...
  #1 (permalink)  
Antiguo 01/10/2004, 03:33
 
Fecha de Ingreso: agosto-2004
Mensajes: 9
Antigüedad: 19 años, 8 meses
Puntos: 0
No consigo hacer un DataGrid paginado alfabeticamente

Hola, soy nuevo en esto de .net y estoy buscando información acerca de como mostar en c# un datagrid paginado alfabeticamente, es decir, que los links a las siguientes paginas no sean los numeros o las flechas sino que sean las letras del abecedario. ¿Alguien puede ayudarme?

Tambien he observado que cuando ejecuto la pagina que muestar el datagrid, tarda muchisimo. Aproximadamente tiene que recuperar 1500 registros con el par (id, valor), pero me puede tardar 15 minutos !!! Cómo se puede optimizar esto? Imagino que habrá manera de que no recupere todo "de golpe" o alguna solucion así ... ??

gracias y buen fin de semana
  #2 (permalink)  
Antiguo 01/10/2004, 04:58
Avatar de avsurdo  
Fecha de Ingreso: mayo-2004
Ubicación: Sevilla
Mensajes: 84
Antigüedad: 20 años
Puntos: 0
Para hacer eso creo, si no me equivoco, que tienes que realizar un control personalizado en el que aparezcan las letras, y cuando pulses encima de ellas hagas un select a la BD pasandole como parámetro la letra.
__________________
:stress: De verdad de la buena
  #3 (permalink)  
Antiguo 01/10/2004, 05:40
 
Fecha de Ingreso: agosto-2004
Mensajes: 9
Antigüedad: 19 años, 8 meses
Puntos: 0
gracias por la respuesta, pero lo que necesito es el código en c# porque no sé desarrollar la idea que me dices, y me imagino que esta manera de presentar un datagrid ya se habrá hecho más veces. Mi código es algo así:
************************************************** **

using System;
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;
using System.Data.Odbc;
using System.Configuration;


namespace Aplicacion
{

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 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)
{

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)
{

InitializeComponent();
base.OnInit(e);
}


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)
{

}

}
}
************************************************** **

Este es mi codigo, donde, pro cierto, solo consigo ver la primera pagina ... y no sé por qué ...
alguien puede ayudarme??

gracias again
  #4 (permalink)  
Antiguo 01/10/2004, 05:52
Avatar de avsurdo  
Fecha de Ingreso: mayo-2004
Ubicación: Sevilla
Mensajes: 84
Antigüedad: 20 años
Puntos: 0
Lo que quieres no es sencillo. Veré si tengo tiempo y lo creo, por que me parece util. En relación a que solo ves la primera página es por que tienes que escribir el código para que pase de página en DataGrid1_SelectedIndexChanged, si no siempre se mostrara la misma página.
DataGrid1.CurrentPageIndex = e.NewPageIndex;
__________________
:stress: De verdad de la buena
  #5 (permalink)  
Antiguo 01/10/2004, 07:27
 
Fecha de Ingreso: agosto-2004
Mensajes: 9
Antigüedad: 19 años, 8 meses
Puntos: 0
muy bien, yo seguiré intentándolo. Respecto a la instrucción que me indicas, lo he probado ya, pero no veo nada cuando avanzo al sgte datagrid ... Lo traceo, y cuando pincho en ">", veo que entra en el método "Page_Load", se salta el if (logicamente), acaba el método y me dirige el depurador al explorer para mostarme la página en blanco ...
decirte qu een el código he tenido que hacer 2 cosas:
1.- cambiar la cabecera del método DataGrid1_SelectedIndexChanged a "(object sender, System.Web.UI.WebControls.DataGridPageChangedEvent Args e)" para que me cogiera la instrucción "e.NewPageIndex"
2.- Comentar la sgte linea del método InitializeComponent():
"//this.DataGrid1.SelectedIndexChanged += new System.EventHandler(this.DataGrid1_SelectedIndexCh anged);"

Agradezco tu ayuda. Por favor dime algo cuando sepas
  #6 (permalink)  
Antiguo 03/10/2004, 14:45
Avatar de avsurdo  
Fecha de Ingreso: mayo-2004
Ubicación: Sevilla
Mensajes: 84
Antigüedad: 20 años
Puntos: 0
me faltó una cosita, y por eso no te sale nada cuando cambias de página, lo siguiente que tienes que hacer es rellenar de nuevo con los datos el datagrid.
__________________
:stress: De verdad de la buena
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 09:31.