Ordenacion en un DataGrid

08/12/2004 - 22:13 por griss | Informe spam
Hola !

Estoy peleandome con un datagrid, el cual quiero ordenar
por medio de unas de sus columnas, en el lado del cliente
tengo el siguiente codigo:

cliente:

<asp:BoundColumn DataField="modalidad"
HeaderText="Modalidad" SortExpression="Modalidad">

donde ya estableci la propiedad AllowSorting = true;

Ahora en el servidor tengo lo siguiente:

private void grid_SortCommand(object source,
System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
{
tabla2 = (DataTable)Odatagrid.Consultar ();
DataView dv = new DataView (tabla2);
dv.Sort = e.SortExpression;
grid.DataSource = dv;
grid.DataBind();
}

ok cuando le doy click en la Modalidad se ordena por
orden alfabetico mi columna pero al utilizar la
paginacion la ordenacion se pierde.

que mas tengo que hacer para que esto funcione?
les agradeceria mucho si me orientaran un poco.

grisss
saludos!

Preguntas similare

Leer las respuestas

#1 A.Poblacion
09/12/2004 - 07:37 | Informe spam
Probablemente para hacer la paginación habrás metido en el evento
PageIndexChanged un trozo de coódigo que vuelve a leer la tabla y a hacer un
databind. En ese código tendrás que intercalar un Dataview y ponerle el
"Sort" igual que has hecho en el evento SortCommand.


"griss" wrote in message
news:061d01c4dd6a$b57ff3f0$
Mostrar la cita
#2 grissss
10/12/2004 - 16:58 | Informe spam
ok si estas en lo cierto , vuelvo a llenar una tabla con
el siguiente codigo.

private void gridPrepropuesta_PageIndexChanged(object
source,
System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
tabla2 = (DataTable)Odatagrid.Consultar ();
gridPrepropuesta.CurrentPageIndex = e.NewPageIndex ;
gridPrepropuesta.DataSource = dv;
gridPrepropuesta.DataBind();
}

ok ahora hago lo siguiente:

private void gridPrepropuesta_PageIndexChanged(object
source,
System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
tabla2 = (DataTable)Odatagrid.Consultar ();
DataView dv = new DataView (tabla2);
dv.Sort = e.NewPageIndex.ToString () ;
grid.CurrentPageIndex = e.NewPageIndex ;
grid.DataSource = dv;
grid.DataBind();
}


pero no fuinciona que estoy haciendo mal!???
me marca un error de que no encuntra la columna 1.


cliente:
asp:BoundColumn DataField="modalidad"
HeaderText="Modalidad" SortExpression="Modalidad">

donde ya estableci la propiedad AllowSorting = true;

Ahora en el servidor tengo lo siguiente:

private void grid_SortCommand(object source,
System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
{
tabla2 = (DataTable)Odatagrid.Consultar ();
DataView dv = new DataView (tabla2);
dv.Sort = e.SortExpression;
grid.DataSource = dv;
grid.DataBind();
}

grisss
saludos!
#3 A.Poblacion
10/12/2004 - 17:22 | Informe spam
Lo que estás haciendo mal es que en el Sort del DataView le has puesto
e.NewPageIndex, que lo que trae es el número de la página y no el nombre de
la columna (por eso dice que no encuentra la columna "1").

El nombre de la columna lo tendrás que guardar en el evento SortCommand y
luego recuperarlo de donde lo hayas guardado en el PageIndexChanged para
pasárselo al Sort del DataView.

Recuerda que las clases de los WebForms no conservan estado, por lo que no
puedes usar una variable de la clase para guardar la columna de ordenación.
Puedes recurrir al ViewState, al Session, o a una Cookie para guardar ese
dato.


"grissss" wrote in message
news:04f101c4ded1$1e4165b0$
Mostrar la cita
#4 grisss
10/12/2004 - 18:22 | Informe spam
ok tienes razon ya lo hice y funciono ahora hare lo mismo
para las otras columnas.
gracias!

Mostrar la cita
le has puesto
Mostrar la cita
página y no el nombre de
Mostrar la cita
columna "1").
Mostrar la cita
evento SortCommand y
Mostrar la cita
PageIndexChanged para
Mostrar la cita
estado, por lo que no
Mostrar la cita
columna de ordenación.
Mostrar la cita
para guardar ese
Mostrar la cita
message
Mostrar la cita
con
Mostrar la cita
e)
Mostrar la cita
e)
Mostrar la cita
e)
Mostrar la cita
Ads by Google
Search Busqueda sugerida