Para continuar ordenando después de pasar la página, logre este efecto:
por ejemplo, hay 15 registros en total y se muestran 10 registros en cada página
. Al ordenar: los primeros 10 registros se ordenan en la primera página y los siguientes cinco registros. se clasifican por separado cuando se pasa la segunda página.
Preste atención a los siguientes puntos:
1. Si hay muchos datos, es mejor no colocar el conjunto de datos en el caché (viewstate), lo que afectará el rendimiento
. ViewState almacena la última expresión electrónica y si la expresión electrónica está en orden ascendente o descendente.
Los ejemplos son los siguientes:
1. El evento de clasificación existente se escribe así. Esto se usa al hacer clic en el título de clasificación de arriba:
vacío privado. grdProjTrace_SortCommand(fuente del objeto, DataGridSortCommandEventArgs e)
{
this.grdProjTrace.CurrentPageIndex = 0;
DataView dv = obtener código de datos;
cadena strSort = "";
string strOrder = ""; // Método de clasificación. 0, orden descendente, 1 orden ascendente if(ViewState["SortExpresstion"]!= null)
{
strSort = ViewState["SortExpresstion"].ToString();
strSort = strSort.Substring(0,strSort.Length -1);
strOrder = ViewState["SortExpresstion"].ToString();
strOrder = strOrder.Substring(strOrder.Longitud -1);
}
if(e.SortExpression == "NombreCliente")
{
if(strSort!= "NombreCliente")
{
this.ViewState["SortExpresstion"] = nombredelcliente0";
dv.Sort = "NombreCliente DESC";
}
demás
{
si(strOrden == "0")
{
this.ViewState["SortExpresstion"] = "NombreCliente1";
dv.Sort = "NombreCliente ASC";
}
demás
{
this.ViewState["SortExpresstion"] = "NombreCliente0";
dv.Sort = "NombreCliente DESC";
}
}
}
if(e.SortExpression == "nombre completo")
{
if(strSort! = "nombre completo")
{
this.ViewState["SortExpresstion"] = "fullName0";
dv.Sort = "nombre completo DESC";
}
demás
{
si(strOrden == "0")
{
this.ViewState["SortExpresstion"] = "fullName1";
dv.Sort = "nombre completo ASC";
}
demás
{
this.ViewState["SortExpresstion"] = "fullName0";
dv.Sort = "nombre completo DESC";
}
}
}
this.grdProjTrace.DataSource = dv;
this.grdProjTrace.DataBind();
}
2. El siguiente método lo escribí yo mismo y se llama en el evento de cambio de página.
vacío privado ChangePageDataBind()
{
DataView dv = obtener código de datos;
cadena strSort = "";
string strOrder = ""; // Método de clasificación. 0, orden descendente, 1 orden ascendente if(ViewState["SortExpresstion"]!= null)
{
strSort = ViewState["SortExpresstion"].ToString();
strSort = strSort.Substring(0,strSort.Length -1);
strOrder = ViewState["SortExpresstion"].ToString();
strOrder = strOrder.Substring(strOrder.Longitud -1);
}
if(this.ViewState["SortExpresstion"]! = nulo)
{
if(strSort == "NombreCliente")
{
si(strOrden == "1")
{
this.ViewState["SortExpresstion"] = "NombreCliente1";
dv.Sort = "NombreCliente ASC";
}
demás
{
this.ViewState["SortExpresstion"] = "NombreCliente0";
dv.Sort = "NombreCliente DESC";
}
}
}
if(this.ViewState["SortExpresstion"]! = nulo)
{
if(strSort == "nombre completo")
{
si(strOrden == "1")
{
this.ViewState["SortExpresstion"] = "fullName1";
dv.Sort = "nombre completo ASC";
}
demás
{
this.ViewState["SortExpresstion"] = "fullName0";
dv.Sort = "nombre completo DESC";
}
}
}
this.grdProjTrace.DataSource = dv;
this.grdProjTrace.DataBind();
}
Los dos métodos anteriores se pueden llamar directamente siempre que se modifique el nombre del campo a ordenar
1. El método es muy simple y práctico, por lo que no lo explicaré aquí.
2. El método se usa así:
privado void grdProjTrace_PageIndexChanged (fuente del objeto, DataGridPageChangedEventArgs e)
{
intentar
{
intentar
{
this.grdProjTrace.CurrentPageIndex = e.NewPageIndex;
}
atrapar
{
this.grdProjTrace.CurrentPageIndex = 0;
}
this.ChangePageDataBind();
}
captura (System.Exception errWS)
{
//anormal}
}