ページをめくった後も並べ替えを続けるには、次の効果を実現します。
たとえば、合計 15 レコードがあり、各ページに 10 レコードが表示されます
。並べ替え時: 最初の 10 レコードが最初のページに並べ替えられ、次の 5 レコードが並べ替えられます。次
の点に注意してください。
1. 大量のデータがある場合は、パフォーマンスに影響するため、データ セットをキャッシュ (ビューステート) に置かないことをお勧めします
。 ViewState には、最後の e.expression と、その e.expression が昇順か降順かが格納されます。
例は次のとおりです。
1. 既存の並べ替えイベントは、上記の並べ
替えタイトルをクリックするときに使用されます。
grdProjTrace_SortCommand(オブジェクト ソース、DataGridSortCommandEventArgs e)
{
this.grdProjTrace.CurrentPageIndex = 0;
DataView dv = データ コードを取得します。
文字列 strSort = "";
string strOrder = "" // 並べ替えメソッド。 0、降順、1 昇順 if(ViewState["SortExpression"] != null)
{
strSort = ViewState["SortExpression"].ToString();
strSort = strSort.Substring(0,strSort.Length -1);
strOrder = ViewState["SortExpression"].ToString();
strOrder = strOrder.Substring(strOrder.Length -1);
}
if(e.SortExpression == "顧客名")
{
if(strSort != "顧客名")
{
this.ViewState["SortExpression"] = ustomerName0";
dv.Sort = "顧客名 DESC";
}
それ以外
{
if(strOrder == "0")
{
this.ViewState["SortExpression"] = "顧客名 1";
dv.Sort = "顧客名 ASC";
}
それ以外
{
this.ViewState["SortExpression"] = "顧客名0";
dv.Sort = "顧客名 DESC";
}
}
}
if(e.SortExpression == "フルネーム")
{
if(strSort != "フルネーム")
{
this.ViewState["SortExpression"] = "fullName0";
dv.Sort = "フルネームDESC";
}
それ以外
{
if(strOrder == "0")
{
this.ViewState["SortExpression"] = "fullName1";
dv.Sort = "フルネーム ASC";
}
それ以外
{
this.ViewState["SortExpression"] = "fullName0";
dv.Sort = "フルネームDESC";
}
}
}
this.grdProjTrace.DataSource = dv;
this.grdProjTrace.DataBind();
2.
次のメソッドは私が作成したもので、ページめくりイベントで呼び出されます。
プライベート void ChangePageDataBind()
{
DataView dv = データ コードを取得します。
文字列 strSort = "";
string strOrder = "" // 並べ替えメソッド。 0、降順、1 昇順 if(ViewState["SortExpression"] != null)
{
strSort = ViewState["SortExpression"].ToString();
strSort = strSort.Substring(0,strSort.Length -1);
strOrder = ViewState["SortExpression"].ToString();
strOrder = strOrder.Substring(strOrder.Length -1);
}
if(this.ViewState["SortExpression"] != null)
{
if(strSort == "顧客名")
{
if(strOrder == "1")
{
this.ViewState["SortExpression"] = "顧客名 1";
dv.Sort = "顧客名 ASC";
}
それ以外
{
this.ViewState["SortExpression"] = "顧客名0";
dv.Sort = "顧客名 DESC";
}
}
}
if(this.ViewState["SortExpression"] != null)
{
if(strSort == "フルネーム")
{
if(strOrder == "1")
{
this.ViewState["SortExpression"] = "fullName1";
dv.Sort = "フルネーム ASC";
}
それ以外
{
this.ViewState["SortExpression"] = "fullName0";
dv.Sort = "フルネームDESC";
}
}
}
this.grdProjTrace.DataSource = dv;
this.grdProjTrace.DataBind();
1.
並べ替えるフィールドの名前を変更する限り、上記 2 つのメソッドを直接呼び出すことができます。
このメソッドは非常にシンプルで実用的なため、ここでは説明しません。
2. このメソッドは次のように使用されます:
private void grdProjTrace_PageIndexChanged(object source, DataGridPageChangedEventArgs e)
{
試す
{
試す
{
this.grdProjTrace.CurrentPageIndex = e.NewPageIndex;
}
キャッチ
{
this.grdProjTrace.CurrentPageIndex = 0;
this.ChangePageDataBind
();
}
catch(System.Exception errWS)
{
//異常な}
}