Pour continuer le tri après avoir tourné la page, obtenez cet effet :
Par exemple, il y a 15 enregistrements au total, et 10 enregistrements sont affichés sur chaque page
. Lors du tri : les 10 premiers enregistrements sont triés sur la première page, et les cinq enregistrements suivants. sont triés séparément lorsque la deuxième page est tournée.
Faites attention aux points suivants :
1. S'il y a beaucoup de données, il est préférable de ne pas mettre l'ensemble de données dans le cache (viewstate), ce qui affectera les performances
2. ViewState stocke la dernière e.expression et indique si l'e.expression est dans l'ordre croissant ou décroissant.
Les exemples sont les suivants :
1. L'événement de tri existant est écrit comme ceci : il est utilisé lorsque vous cliquez sur le titre de tri ci-dessus :
private void
.grdProjTrace_SortCommand (source de l'objet, DataGridSortCommandEventArgs e)
{
this.grdProjTrace.CurrentPageIndex = 0;
DataView dv = obtenir le code de données ;
chaîne strSort = "" ;
string strOrder = ""; // Méthode de tri. 0, ordre décroissant, 1 ordre croissant 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 == "CustomerName")
{
if(strSort != "NomClient")
{
this.ViewState["SortExpresstion"] = nom_utilisateur0";
dv.Sort = "NomClient DESC" ;
}
autre
{
si(strOrder == "0")
{
this.ViewState["SortExpresstion"] = "CustomerName1";
dv.Sort = "NomClient ASC" ;
}
autre
{
this.ViewState["SortExpresstion"] = "CustomerName0";
dv.Sort = "NomClient DESC" ;
}
}
}
if(e.SortExpression == "fullName")
{
si(strSort != "nom complet")
{
this.ViewState["SortExpresstion"] = "fullName0";
dv.Sort = "nom complet DESC" ;
}
autre
{
si(strOrder == "0")
{
this.ViewState["SortExpresstion"] = "fullName1";
dv.Sort = "nom complet ASC" ;
}
autre
{
this.ViewState["SortExpresstion"] = "fullName0";
dv.Sort = "nom complet DESC" ;
}
}
}
this.grdProjTrace.DataSource = dv;
this.grdProjTrace.DataBind();
}
2. La méthode suivante est écrite par moi-même et est appelée lors de l'événement de tournage de page.
vide privé ChangePageDataBind()
{
DataView dv = obtenir le code de données ;
chaîne strSort = "" ;
string strOrder = ""; // Méthode de tri. 0, ordre décroissant, 1 ordre croissant 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 == "NomClient")
{
si(strOrder == "1")
{
this.ViewState["SortExpresstion"] = "CustomerName1";
dv.Sort = "NomClient ASC" ;
}
autre
{
this.ViewState["SortExpresstion"] = "CustomerName0";
dv.Sort = "NomClient DESC" ;
}
}
}
if(this.ViewState["SortExpresstion"] != null)
{
si(strSort == "fullName")
{
si(strOrder == "1")
{
this.ViewState["SortExpresstion"] = "fullName1";
dv.Sort = "nom complet ASC" ;
}
autre
{
this.ViewState["SortExpresstion"] = "fullName0";
dv.Sort = "nom complet DESC" ;
}
}
}
this.grdProjTrace.DataSource = dv;
this.grdProjTrace.DataBind();
}
Les deux méthodes ci-dessus peuvent être appelées directement à condition de modifier le nom du champ à trier.
1. La méthode est très simple et pratique, je ne l'entrerai donc pas ici.
2. La méthode est utilisée comme ceci :
private void grdProjTrace_PageIndexChanged(object source, DataGridPageChangedEventArgs e)
{
essayer
{
essayer
{
this.grdProjTrace.CurrentPageIndex = e.NewPageIndex;
}
attraper
{
this.grdProjTrace.CurrentPageIndex = 0;
}
this.ChangePageDataBind();
}
catch (System.Exception errWS)
{
//anormal}
}