Um nach dem Umblättern mit dem Sortieren fortzufahren, erzielen Sie diesen Effekt:
Beispielsweise gibt es insgesamt 15 Datensätze und auf jeder Seite werden 10 Datensätze angezeigt
. Beim Sortieren: Die ersten 10 Datensätze werden auf der ersten Seite sortiert, die nächsten fünf Datensätze Beim Umblättern der zweiten Seite werden
die folgenden Punkte separat sortiert:
1. Wenn viele Daten vorhanden sind, ist es am besten, den Datensatz nicht in den Cache (Ansichtsstatus) zu legen, da dies die Leistung beeinträchtigt
. Der ViewState speichert den letzten e.expression und ob der e.expression in aufsteigender oder absteigender Reihenfolge vorliegt.
Beispiele sind wie folgt:
1. Das vorhandene Sortierereignis wird wie folgt geschrieben: Dies wird verwendet, wenn auf den Sortiertitel oben geklickt
wird grdProjTrace_SortCommand(Objektquelle, DataGridSortCommandEventArgs e)
{
this.grdProjTrace.CurrentPageIndex = 0;
DataView dv = Datencode abrufen;
string strSort = "";
string strOrder = ""; // Sortiermethode. 0, absteigende Reihenfolge, 1 aufsteigende Reihenfolge 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 != "CustomerName")
{
this.ViewState["SortExpresstion"] = ustomerName0";
dv.Sort = "CustomerName DESC";
}
anders
{
if(strOrder == "0")
{
this.ViewState["SortExpresstion"] = "CustomerName1";
dv.Sort = "Kundenname ASC";
}
anders
{
this.ViewState["SortExpresstion"] = "CustomerName0";
dv.Sort = "CustomerName DESC";
}
}
}
if(e.SortExpression == "fullName")
{
if(strSort != "fullName")
{
this.ViewState["SortExpresstion"] = "fullName0";
dv.Sort = "fullName DESC";
}
anders
{
if(strOrder == "0")
{
this.ViewState["SortExpresstion"] = "fullName1";
dv.Sort = "fullName ASC";
}
anders
{
this.ViewState["SortExpresstion"] = "fullName0";
dv.Sort = "fullName DESC";
}
}
}
this.grdProjTrace.DataSource = dv;
this.grdProjTrace.DataBind();
}
2. Die folgende Methode wurde von mir selbst geschrieben und wird im Page-Turn-Event aufgerufen.
private void ChangePageDataBind()
{
DataView dv = Datencode abrufen;
string strSort = "";
string strOrder = ""; // Sortiermethode. 0, absteigende Reihenfolge, 1 aufsteigende Reihenfolge 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 == "CustomerName")
{
if(strOrder == "1")
{
this.ViewState["SortExpresstion"] = "CustomerName1";
dv.Sort = "Kundenname ASC";
}
anders
{
this.ViewState["SortExpresstion"] = "CustomerName0";
dv.Sort = "CustomerName DESC";
}
}
}
if(this.ViewState["SortExpresstion"] != null)
{
if(strSort == "fullName")
{
if(strOrder == "1")
{
this.ViewState["SortExpresstion"] = "fullName1";
dv.Sort = "fullName ASC";
}
anders
{
this.ViewState["SortExpresstion"] = "fullName0";
dv.Sort = "fullName DESC";
}
}
}
this.grdProjTrace.DataSource = dv;
this.grdProjTrace.DataBind();
}
Die beiden oben genannten Methoden können direkt aufgerufen werden, solange der Name des zu sortierenden Felds geändert wird
1. Die Methode ist sehr einfach und praktisch, daher werde ich hier nicht näher darauf eingehen.
2. Die Methode wird wie folgt verwendet:
private void grdProjTrace_PageIndexChanged(object source, DataGridPageChangedEventArgs e)
{
versuchen
{
versuchen
{
this.grdProjTrace.CurrentPageIndex = e.NewPageIndex;
}
fangen
{
this.grdProjTrace.CurrentPageIndex = 0;
}
this.ChangePageDataBind();
}
Catch(System.Exception errWS)
{
//abnormal}
}