Para continuar a classificação após virar a página, obtenha este efeito:
por exemplo, há 15 registros no total e 10 registros são exibidos em cada página
. Ao classificar: os primeiros 10 registros são classificados na primeira página e os próximos cinco registros. são classificados separadamente quando a segunda página é virada.
Preste atenção aos seguintes pontos:
1. Se houver muitos dados, é melhor não colocar o conjunto de dados no cache (viewstate), o que afetará o desempenho
2. O ViewState armazena a última e.expression e se a e.expression está em ordem crescente ou decrescente.
Os exemplos são os seguintes:
1. O evento de classificação existente é escrito assim. Isso é usado ao clicar no título de classificação acima:
private void. grdProjTrace_SortCommand(fonte do objeto, DataGridSortCommandEventArgs e)
{
this.grdProjTrace.CurrentPageIndex = 0;
DataView dv = obtém código de dados;
stringstrSort = "";
string strOrder = ""; // Método de classificação. 0, ordem decrescente, 1 ordem crescente if(ViewState["SortExpresstion"] != null)
{
strSort = ViewState["SortExpresstion"].ToString();
strSort = strSort.Substring(0,strSort.Length -1);
strOrder = ViewState["SortExpresstion"].ToString();
strOrder = strOrder.Substring(strOrder.Length -1);
}
if(e.SortExpression == "NomeDoCliente")
{
if(strSort!= "NomeCliente")
{
this.ViewState["SortExpresstion"] = ustomerName0";
dv.Sort = "NomeCliente DESC";
}
outro
{
if(strOrdem == "0")
{
this.ViewState["SortExpresstion"] = "CustomerName1";
dv.Sort = "NomeCliente ASC";
}
outro
{
this.ViewState["SortExpresstion"] = "CustomerName0";
dv.Sort = "NomeCliente DESC";
}
}
}
if(e.SortExpression == "nome completo")
{
if(strSort!= "NomeCompleto")
{
this.ViewState["SortExpresstion"] = "fullName0";
dv.Sort = "nome completo DESC";
}
outro
{
if(strOrdem == "0")
{
this.ViewState["SortExpresstion"] = "fullName1";
dv.Sort = "nome completo ASC";
}
outro
{
this.ViewState["SortExpresstion"] = "fullName0";
dv.Sort = "nome completo DESC";
}
}
}
this.grdProjTrace.DataSource = dv;
this.grdProjTrace.DataBind();
}
2. O método a seguir foi escrito por mim e é chamado no evento de virada de página.
vazio privado ChangePageDataBind()
{
DataView dv = obtém código de dados;
stringstrSort = "";
string strOrder = ""; // Método de classificação. 0, ordem decrescente, 1 ordem crescente if(ViewState["SortExpresstion"] != null)
{
strSort = ViewState["SortExpresstion"].ToString();
strSort = strSort.Substring(0,strSort.Length -1);
strOrder = ViewState["SortExpresstion"].ToString();
strOrder = strOrder.Substring(strOrder.Length -1);
}
if(this.ViewState["SortExpresstion"] != null)
{
if(strSort == "NomeCliente")
{
if(strOrdem == "1")
{
this.ViewState["SortExpresstion"] = "CustomerName1";
dv.Sort = "NomeCliente ASC";
}
outro
{
this.ViewState["SortExpresstion"] = "CustomerName0";
dv.Sort = "NomeCliente DESC";
}
}
}
if(this.ViewState["SortExpresstion"] != null)
{
if(strSort == "NomeCompleto")
{
if(strOrdem == "1")
{
this.ViewState["SortExpresstion"] = "fullName1";
dv.Sort = "nome completo ASC";
}
outro
{
this.ViewState["SortExpresstion"] = "fullName0";
dv.Sort = "nome completo DESC";
}
}
}
this.grdProjTrace.DataSource = dv;
this.grdProjTrace.DataBind();
}
Os dois métodos acima podem ser chamados diretamente desde que o nome do campo a ser ordenado seja modificado
1. O método é muito simples e prático, então não vou entrar nele aqui.
2. O método é usado assim:
private void grdProjTrace_PageIndexChanged(object source, DataGridPageChangedEventArgs e)
{
tentar
{
tentar
{
this.grdProjTrace.CurrentPageIndex = e.NewPageIndex;
}
pegar
{
this.grdProjTrace.CurrentPageIndex = 0;
}
this.ChangePageDataBind();
}
catch(System.Exception errWS)
{
//anormal}
}