ObjectDataSourc用法之三(排序)
ObjectDataSourc用法之三(排序)
SortParameterName參數主要用於對數據源控件進尾排序
1. 准備條件
參數:ObjectDataSource用法之一(SelectMethod來進行簡單的邦定)
添加一個處理對象排序的類Reverser
public class Reverser<T> : IComparer<T>
{
private Type type = null;
private ReverserInfo info;
public Reverser(string className, string name, ReverserInfo.Direction direction)
{
try
{
this.type = Type.GetType(className, true);
this.info.name = name;
this.info.direction = direction;
}
catch (Exception e)
{
throw new Exception(e.Message);
}
}
int IComparer<T>.Compare(T t1, T t2)
{
object x = this.type.InvokeMember(this.info.name, BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty, null, t1, null);
object y = this.type.InvokeMember(this.info.name, BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty, null, t2, null);
if (this.info.direction != ReverserInfo.Direction.ASC)
Swap(ref x, ref y);
return (new CaseInsensitiveComparer()).Compare(x, y);
}
private void Swap(ref object x, ref object y)
{
object temp = null;
temp = x;
x = y;
y = temp;
}
}
public struct ReverserInfo
{
public enum Direction
{
ASC = 0,
DESC,
};
public enum Target
{
CUSTOMER = 0,
FORM,
FIELD,
SERVER,
};
public string name;
public Direction direction;
public Target target;
}
2. 在業務處理類中添加如下方法
public List<EntityMember> OrderItems(string order)
{
string orderName = order.Split(' ')[0];
ReverserInfo.Direction dir = ReverserInfo.Direction.ASC;
if (order.Split(' ').Length>1 && order.Split(' ')[1] == "DESC") dir = ReverserInfo.Direction.DESC;
List<EntityMember> result = new List<EntityMember>();
XmlDocument doc = new XmlDocument();
doc.Load(_path);
XmlNodeList nodes = doc.SelectNodes("/Members/Member");
foreach (XmlNode node in nodes)
{
result.Add(new EntityMember(node.SelectSingleNode("./UID").InnerText, node.SelectSingleNode("./PWD").InnerText, node.SelectSingleNode("./Email").InnerText));
}
Reverser<EntityMember> reverser = new Reverser<EntityMember>("EntityMember", orderName, dir);
result.Sort(reverser);
return result;
說明:當按降序排列的時候,參數order的內容為:屬性名稱+空格+DESC
當按升序排列的時候,參數order的內容為:屬性名稱
3. Aspx頁面的內容為
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
SelectMethod="OrderItems" SortParameterName="order" TypeName="Member"></asp:ObjectDataSource>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataSourceID="ObjectDataSource1" AllowSorting="true">
<Columns>
<asp:BoundField DataField="UID" HeaderText="UID" SortExpression="UID" />
<asp:BoundField DataField="PWD" HeaderText="PWD" SortExpression="PWD" />
<asp:BoundField DataField="Email" HeaderText="Email" SortExpression="Email" />
</Columns>
</asp:GridView>
說明:SortParameterName為指定SelectMethod參數指定的方法中用於排序的參數名稱
ObjectDataSourc用法之三(排序)相关推荐
- java的sort的用法_Java排序方法sort用法详解
Java排序方法sort用法详解 发布于 2020-2-28| 复制链接 摘记: 本文实例为大家分享了java对数组.集合的排序方法,供大家参考,具体内容如下对数组的排序: ```java //对数组 ...
- mysql union如何排序_Mysql中UNION用法与排序
最近也是在写项目中碰到的这个问题,需要将两个SELECT查询结果组合起来进行分组排序,想到了用union方法,用TP的union操作根本无法完成复杂的union操作,于是搜罗了一下,先说一下union ...
- row_number() over (partition by....order by...)用法 分组排序
row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编 ...
- sort函数的用法(C++排序库函数的调用)对数组进行排序,在c++中有库函数帮我们实现,这们就不需要我们自己来编程进行排序了。
对数组进行排序,在c++中有库函数帮我们实现,这们就不需要我们自己来编程进行排序了. (一)为什么要用c++标准库里的排序函数 Sort()函数是c++一种排序方法之一,学会了这种方法也打消我学习c+ ...
- stable_sort的用法与排序算法
一.sort和stable_sort的区别: c++中的stable_sort排序函数与sort功能差不多,排序所使用的思路不一样. 1.sort(a,a+N) ,其中a是数组,a+N表示对a[0]至 ...
- Stream的特性、用法、stream().map().collect()用法
Stream的特性.用法.stream().map().collect()用法 1.举例说明 有一个集合: List<User> users = getList(); 现在想获取User的 ...
- scala排序——ordering vs ordered
在最近探索scala的过程中,发现一个比较重要的问题,那就是排序,排序在业务代码中还是很常见的,最常用的排序就是对集合调用sorted[B >: A](implicit ord: Orderin ...
- 分享Silverlight/WPF/Windows Phone一周学习导读(06月06日-06月11日)
Windows 8预览版推出后,Silverlight社区掀起一番新的"Silverlight灭亡"讨论,由于Windows 8预览版中微软重点强调HTML 5和Javascrip ...
- C++ :vector的使用
VECTOR vector 定义 用法: 1.文件包含: 2.变量声明: 3.具体的用法以及函数调用: 4.内存管理与效率 5.Vector 内存管理成员函数的行为测试 6.vector的其他成员函数 ...
最新文章
- IDC报告称经济衰退将促进云计算发展
- leveldb java_LevelDB 代码撸起来!
- 存图matlab,matlab中保存图片的方法
- sizeof(函数名)=?
- redis底层数据结构简述
- 【LeetCode-SQL每日一题】——183. 从不订购的客户
- 流言终结者- Flutter和RN谁才是更好的跨端开发方案?
- C#LeetCode刷题之#242-有效的字母异位词(Valid Anagram)
- Linux查找大文件 (find的用法)
- 不能将参数转化为lparam_如何将管理需求转化为信息化方案
- python安装jupyterlab_【python】jupyter lab安装与配置
- C# ASPX页面做上传提示:超过了最大请求长度,解决方法
- 开发 Windows 8 Bing地图应用(4)
- HTML中常用的列表标签
- go-redis 读和存储json数组
- CANoe集成解决方案
- There was a problem with the instance info replicator
- 高级计算机软考科目,软考高级中哪个科目好考
- MySQL 删除数据库
- 阿里巴巴、腾讯、百度和京东金融落户雄安新区 | 亚马逊加入FB与微软阵营,共同支持开源AI平台ONNX