しかし、このモデルではこれらのコントロールが使えないので、pure Javascript と html の静的コードを使って実装する必要があるのですが、かなり面倒な気がしますか?実際には...
ページング コードは Web サービス インターフェイス サーバーの中間層によって処理されて返されるため、ソート コードも次のようになります。返す前にソートするだけで問題ありません。
前の記事を読むと、Web サービス インターフェイス サーバーの中間層が汎用 List オブジェクトを操作してデータを処理することがわかります。
Code
List list = new List();
list = objBusinessFacade.GetTB_WEB_NZ_INVESTMENT_CollectionByFlowID(Flow) ID );
return new JavaScriptSerializer().Serialize(list);
次に、青と赤の線の間に並べ替えコードが埋め込まれます。
並べ替え方法は? List オブジェクトには Sort() メソッドがあります
もちろん、これで目的が達成されない場合 (列をクリックする必要があるため)、デフォルトのコンパレータを並べ替えに使用することはできません。ページをこの列でソートするため、デフォルトのコンパレータではこの正確な制御を実現できません。 注: ここではデータベースでのソートが使用されていません。 List 汎用オブジェクトを通じて処理できるものは、データベースを通じて解決する必要がないためです。
List.Sort (ジェネリック IComparer)
IComparer は、System.Collections.Generic.List.Sort メソッドと System.Collections.Generic.List.BinarySearch メソッドで使用されるインターフェイスです。コレクションの並べ替え順序をカスタマイズする方法を提供します。
このインターフェイスには、オーバーロードする必要があるメソッド int Compare(a,b) があります。
パラメータ a、b の順序を調整することで、昇順と降順を実現できます
public int Compare(obj x, obj y)
{
/ /比較対象の列に対応するテーブルの場合 フィールドのデータ型が DateTime である場合、異なるデータ型は異なる
return DateTime.Compare(x,y) -- 昇順
//return DateTime.Compare; (y,x); -- 降順
}
中間層コンパレータ オブジェクトの構築を開始します
コード
///
/// Object [Contributor] Comparator
/// < ;/summary>
パブリック クラス Contributiveperson_INV_Comparer : IComparer< TB_WEB_NZ_INVESTMENT x , TB_WEB_NZ_INVESTMENT y)
{
int rtnCompare = 0; 🎜>{
case ESortType.ASC:
rtnCompare = string.Compare(x.INV, y .INV);
break;
case ESortType.DESC:
rtnCompare = string.Compare(y.INV, x) .INV);
break;
}//switch
return
}
}//
///
///残高支払い期間] Comparator
/// public class Contributiveperson_BALDEPER_Comparer : IComparer
private ESortType m_ESortType = ESortType.ASC; _Comparer(ESortType eSortType )
{
m_ESortType = eSortType;
}
public int Compare(TB_WEB_NZ_INVESTMENT x, TB_WEB_NZ_INVESTMENT y)
{
int rtnCompare = 0; ; Parse(x.BALDEPER.ToString());
DateTime yDateTime = DateTime.Parse(y.BALDEPER.ToString());
switch (m_ESortType)
{
case ESortType.ASC:
rtnCompare = DateTime.Compare(xDateTime, yDateTime);
break ;
case ESortType.DESC:
rtnCompare = DateTime.Compare(yDateTime, xDateTime); /switch
return rtnCompare;
}
}/ /class
上記のコードから、[Investor] と [Balance Payment Period] という 2 つのコンパレータを構築します
呼び出しを容易にするファクトリ メソッドを構築します
コード
コードをコピー
コードは次のとおりです:
///
/// オブジェクトソートコンパレータファクトリー
/// public class Contributiveperson_SortComparerFactory
{
// / <概要>
///
///
///
returns>
public IComparer
GetSortComparer(string FieldName, ESortType eSortType)
IComparer
{
case "BALDEPER"://Baランス支払い期間
IComparer = new Contributiveperson_BALDEPER_Comparer(eSortType);
case "INV"://Investor
IComparer = new Contributiveperson_INV_Comparer(eSortType); /switch
return IComparer;
}
}//class
このメソッドは、Web サービス インターフェイス側で新しく作成されたメソッドであることがわかります。赤いコードセグメントは並べ替えブロック、緑の注釈はフィルタリングコードブロックです(コードは省略されています)
コード
コードをコピー
/// ページあたりの数 param> >/// 現在のページ ///
並べ替えの種類: "ASC" ,"DESC " ;
///
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string Load_Contributiveperson_Table_Sort(string FlowID, int PageCount,
int CurrentPage, string SortType, string SortFieldName)
{
List
list = new List();
list = objBusinessFacade.GetTB_WEB_NZ_INVESTMENT_CollectionByFlowID(フロー ID); ContributivePerson_SortComparerFactory objFactory = new ContributivePerson_SortComparerFactory();
IComparer objSort = null;
if (SortType.ToUpper().Trim() == "ASC")
{
objSort = obj Factory SortFieldName,ESortType.ASC);
}
else if (SortType.ToUpper().Trim() == "DESC")
{
objSort = objFactory.GetSortComparer(SortFieldName, ESortType.DESC) );
}
list.Sort(objSort);
//一部省略したコードについては前回の記事を参照してください
return new JavaScriptSerializer().Serialize(list) ) ;
}
コンパレータを追加すると、SQL ステートメントを介して並べ替えることなく、ジェネリック リスト オブジェクトで任意の並べ替えを実現できます。これは、クライアント ページに必要なパラメータを追加するだけで実現できます。中間層サーバーはすでにすべてのコアを実装しています。同時に、どの列を並べ替える必要があるかを決定する必要があります。 [ホームページ] [次のページ] などのボタンでソート順にページをめくるだけです。ここではクライアントコードは省略されています。
[残高支払い期間] 列に従って昇順にソートします。
[投資家]の降順に並べます