加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

JQuery构建客户/服务分离的链接模型中Table中的排序分析

发布时间:2018-08-17 16:08:59 所属栏目:业界 来源:站长网
导读:从上篇文章,我们实现了Table分页代码的高效性,咱们继承沿着这个思绪,切磋Table表格数据中其它一个很常见的排序题目。说到排序,我记得在asp.net中 GridView中提供了这样的利便,只需在展示字段上加上 Sorting 这样的属性,根基就完成了,剩下就是处事端c
副问题[/!--empirenews.page--] 从上篇文章,我们实现了Table分页代码的高效性,咱们继承沿着这个思绪,切磋Table表格数据中其它一个很常见的排序题目。说到排序,我记得在asp.net中 GridView中提供了这样的利便,只需在展示字段上加上 Sorting 这样的属性,根基就完成了,剩下就是处事端cs代码的写法了。但在这个模子中,因为不能操作这些控件,我们必要借助纯Javascript和html静态代码来实现,感受仿佛挺贫困的?着实呢......

分页代码既然由Webservice接口处事端中间层处理赏罚好回传返来,那么我们的排序代码也可以这样的,只是在回传前举办排序就ok了,下面就说明一下。

看过上篇的文章,可以知道在Webservice接口处事端中间层处理赏罚数据是哄骗泛型的List工具: Copy to ClipboardLiehuo.Net Codes引用的内容:[www.veryhuo.com] List<TB_WEB_NZ_INVESTMENT> list = new List<TB_WEB_NZ_INVESTMENT>();
list = objBusinessFacade.GetTB_WEB_NZ_INVESTMENT_CollectionByFlowID(FlowID);

return new JavaScriptSerializer().Serialize(list);

那么我们的排序代码就嵌在 蓝色行 和 赤色行 之间。

怎样排序呢?List这个工具内里有个Sort()要领。

JQuery构建客户/处事疏散的链接模子中Table中的排序说明

显然我们不能行使默认较量器来举办排序,由于假如这样就达不到目标(我们必要在页面点击某列就按该罗列办排序,而默认较量器就达不到这种精准的节制),注:这里并未回收在数据库长举办排序,为什么?由于通过List泛型工具可以处理赏罚的工作就没须要又要通过数据库来办理。

List.Sort (泛型 IComparer)

IComparer 是接口由 System.Collections.Generic.List.Sort 和 System.Collections.Generic.List.BinarySearch 要领行使。它提供一种自界说荟萃排序次序的要领。

该接口有一个必要重载的要领 int Compare(a,b)

通过调解参数a,b的次序实现升序和降序分列:

Copy to ClipboardLiehuo.Net Codes引用的内容:[www.veryhuo.com] public int Compare(obj x , obj y)
{
//假如较量的列所对应的表字段的数据范例是DateTime,差异的数据范例对应差异的
return DateTime.Compare(x,y); -- 升序

//return DateTime.Compare(y,x); -- 降序
}

开始构建中间层较量器工具:

Copy to ClipboardLiehuo.Net Codes引用的内容:[www.veryhuo.com] /// <summary>
/// 工具【出资人】较量器
/// </summary>
public class ContributivePerson_INV_Comparer : IComparer<TB_WEB_NZ_INVESTMENT>
{
private ESortType m_ESortType = ESortType.ASC;

public ContributivePerson_INV_Comparer(ESortType eSortType)
{
m_ESortType = eSortType;
}

public int Compare(TB_WEB_NZ_INVESTMENT x, TB_WEB_NZ_INVESTMENT y)
{
int rtnCompare = 0; ;

switch (m_ESortType)
{
case ESortType.ASC:
rtnCompare = string.Compare(x.INV, y.INV);
break;
case ESortType.DESC:
rtnCompare = string.Compare(y.INV, x.INV);
break;
}//switch

return rtnCompare;

}

}//class

/// <summary>
/// 【余额缴付限期】较量器
/// </summary>
public class ContributivePerson_BALDEPER_Comparer : IComparer<TB_WEB_NZ_INVESTMENT>
{
private ESortType m_ESortType = ESortType.ASC;

public ContributivePerson_BALDEPER_Comparer(ESortType eSortType)
{
m_ESortType = eSortType;
}

public int Compare(TB_WEB_NZ_INVESTMENT x, TB_WEB_NZ_INVESTMENT y)
{
int rtnCompare = 0; ;
DateTime xDateTime = DateTime.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);
break;
}//switch

return rtnCompare;

}

}//class

从以上代码中,我们结构了两个较量器,别离是【出资人】,【余额缴付限期】

我们结构一个工场要领,来利便挪用:

Copy to ClipboardLiehuo.Net Codes引用的内容:[www.veryhuo.com] /// <summary>
/// 工具排序较量器工场
/// </summary>
public class ContributivePerson_SortComparerFactory
{

/// <summary>
///
/// </summary>
/// <param name="FieldName"></param>
/// <returns></returns>
public IComparer<TB_WEB_NZ_INVESTMENT> GetSortComparer(string FieldName, ESortType eSortType)
{
IComparer<TB_WEB_NZ_INVESTMENT> IComparer = null;
switch (FieldName)
{
case "BALDEPER"://余额缴付限期
IComparer = new ContributivePerson_BALDEPER_Comparer(eSortType);
break;
case "INV"://投资人
IComparer = new ContributivePerson_INV_Comparer(eSortType);
break;
}//switch

return IComparer;
}
}//class

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读