DataTable 中的查询、排序及分页(c#)
2012-04-04 20:20
771 查看
public class GetDataTable
{
/// <summary>
/// 对sourceDt进行排序,并且可以自由设置显示的条数
/// --select top (num) from sourceDt order by strSort
/// </summary>
/// <param name="sourceDt">原DataTable</param>
/// <param name="strSort">排序的字段,不用加order by (如: name desc 或 name desc,datecreated desc)</param>
/// <param name="topNum">显示的数量(为0 是显示全部)</param>
/// <returns>new DataTable</returns>
public static DataTable SortTop(DataTable sourceDt, string strSort, int topNum)
{
DataTable dt = sourceDt.Clone();
int totalCount = sourceDt.Rows.Count;
if (totalCount > 0)
{
DataView dv = sourceDt.DefaultView;
dv.Sort = strSort;
//计算要显示的条数
int count = topNum > 0 ? (topNum > totalCount ? totalCount : topNum) : totalCount;
for (int i = 0; i < count; i++)
{
dt.ImportRow(dv[i].Row);
}
}
return dt;
}
/// <summary>
/// 对sourceDt进行查询和排序,并且可以自由设置显示的条数
/// --select top (count) from sourceDt where strSelect order by strSort
/// </summary>
/// <param name="sourceDt">原DataTable</param>
/// <param name="strSelect">查询条件(如:name='me')</param>
/// <param name="strSort">排序字段,不用加order by (如: name desc 或 name desc,datecreated desc)</param>
/// <param name="count">显示的数量(为0 是显示全部)</param>
/// <returns>new DataTable</returns>
public static DataTable SelectTop(DataTable sourceDt, string strSelect, string strSort, int count)
{
DataTable dt = sourceDt.Clone();
bool noSort = string.IsNullOrEmpty(strSort);
DataRow[] dr = noSort ? sourceDt.Select(strSelect) : sourceDt.Select(strSelect, strSort);
foreach (DataRow row in dr)
{
dt.Rows.Add(row.ItemArray);
}
int dtCount = dt.Rows.Count;
if (dtCount > 0)
{
//计算要显示的条数
int num = count > 0 ? (count > dtCount ? dtCount : count) : dtCount;
DataView dv = dt.DefaultView;
if (!noSort)
{
dv.Sort = strSort;
}
for (int i = 0; i < num; i++)
{
dt.ImportRow(dv[i].Row);
}
}
return dt;
}
/// <summary>
/// DateTable的分页操作
/// </summary>
/// <param name="dt">要进行分页的DataTable</param>
/// <param name="currentPageIndex">当前页数</param>
/// <param name="pageSize">一页显示的条数</param>
/// <returns>第pageIndex页的数据</returns>
public static DataTable SetPage(DataTable dt, int currentPageIndex, int pageSize)
{
if (currentPageIndex == 0)
{
return dt;
}
DataTable newdt = dt.Clone();
int rowbegin = (currentPageIndex - 1) * pageSize;//当前页的第一条数据在dt中的位置
int rowend = currentPageIndex * pageSize;//当前页的最后一条数据在dt中的位置
if (rowbegin >= dt.Rows.Count)
{
return newdt;
}
if (rowend > dt.Rows.Count)
{
rowend = dt.Rows.Count;
}
DataView dv = dt.DefaultView;
for (int i = rowbegin; i <= rowend - 1; i++)
{
newdt.ImportRow(dv[i].Row);
}
return newdt;
}
/// <summary>
/// 返回分页的页数
/// </summary>
/// <param name="count">总条数</param>
/// <param name="pageye">每页显示多少条</param>
/// <returns>如果 结尾为0:则返回1</returns>
public static int PageCount(int count, int pageye)
{
int page = 0;
int sesepage = pageye;
if (count % sesepage == 0) { page = count / sesepage; }
else { page = (count / sesepage) + 1; }
if (page == 0) { page += 1; }
return page;
}
}
{
/// <summary>
/// 对sourceDt进行排序,并且可以自由设置显示的条数
/// --select top (num) from sourceDt order by strSort
/// </summary>
/// <param name="sourceDt">原DataTable</param>
/// <param name="strSort">排序的字段,不用加order by (如: name desc 或 name desc,datecreated desc)</param>
/// <param name="topNum">显示的数量(为0 是显示全部)</param>
/// <returns>new DataTable</returns>
public static DataTable SortTop(DataTable sourceDt, string strSort, int topNum)
{
DataTable dt = sourceDt.Clone();
int totalCount = sourceDt.Rows.Count;
if (totalCount > 0)
{
DataView dv = sourceDt.DefaultView;
dv.Sort = strSort;
//计算要显示的条数
int count = topNum > 0 ? (topNum > totalCount ? totalCount : topNum) : totalCount;
for (int i = 0; i < count; i++)
{
dt.ImportRow(dv[i].Row);
}
}
return dt;
}
/// <summary>
/// 对sourceDt进行查询和排序,并且可以自由设置显示的条数
/// --select top (count) from sourceDt where strSelect order by strSort
/// </summary>
/// <param name="sourceDt">原DataTable</param>
/// <param name="strSelect">查询条件(如:name='me')</param>
/// <param name="strSort">排序字段,不用加order by (如: name desc 或 name desc,datecreated desc)</param>
/// <param name="count">显示的数量(为0 是显示全部)</param>
/// <returns>new DataTable</returns>
public static DataTable SelectTop(DataTable sourceDt, string strSelect, string strSort, int count)
{
DataTable dt = sourceDt.Clone();
bool noSort = string.IsNullOrEmpty(strSort);
DataRow[] dr = noSort ? sourceDt.Select(strSelect) : sourceDt.Select(strSelect, strSort);
foreach (DataRow row in dr)
{
dt.Rows.Add(row.ItemArray);
}
int dtCount = dt.Rows.Count;
if (dtCount > 0)
{
//计算要显示的条数
int num = count > 0 ? (count > dtCount ? dtCount : count) : dtCount;
DataView dv = dt.DefaultView;
if (!noSort)
{
dv.Sort = strSort;
}
for (int i = 0; i < num; i++)
{
dt.ImportRow(dv[i].Row);
}
}
return dt;
}
/// <summary>
/// DateTable的分页操作
/// </summary>
/// <param name="dt">要进行分页的DataTable</param>
/// <param name="currentPageIndex">当前页数</param>
/// <param name="pageSize">一页显示的条数</param>
/// <returns>第pageIndex页的数据</returns>
public static DataTable SetPage(DataTable dt, int currentPageIndex, int pageSize)
{
if (currentPageIndex == 0)
{
return dt;
}
DataTable newdt = dt.Clone();
int rowbegin = (currentPageIndex - 1) * pageSize;//当前页的第一条数据在dt中的位置
int rowend = currentPageIndex * pageSize;//当前页的最后一条数据在dt中的位置
if (rowbegin >= dt.Rows.Count)
{
return newdt;
}
if (rowend > dt.Rows.Count)
{
rowend = dt.Rows.Count;
}
DataView dv = dt.DefaultView;
for (int i = rowbegin; i <= rowend - 1; i++)
{
newdt.ImportRow(dv[i].Row);
}
return newdt;
}
/// <summary>
/// 返回分页的页数
/// </summary>
/// <param name="count">总条数</param>
/// <param name="pageye">每页显示多少条</param>
/// <returns>如果 结尾为0:则返回1</returns>
public static int PageCount(int count, int pageye)
{
int page = 0;
int sesepage = pageye;
if (count % sesepage == 0) { page = count / sesepage; }
else { page = (count / sesepage) + 1; }
if (page == 0) { page += 1; }
return page;
}
}
相关文章推荐
- DataTable 中的查询、排序及分页(c#)
- 从数据库随机查询出一批数据并排序输出——C#中DataTable技术学习
- C# MongoDB 查询,分组,聚合,排序,条件,分页
- springmvc + jquery datatable + ajax实现服务端动态分页查询
- 千万数量级分页存储过程2(可支持多表查询,任意排序)
- C#动态操作DataTable(新增行、列、查询行、列等)
- C# DataTable 排序
- YUI2 datatable 分页及服务器端排序
- c# DataTable中select 返回新的DataTable(DataTable筛选,排序)
- Oracle分页查询中排序与效率问题
- 使用插件bootstrap-table实现表格记录的查询、分页、排序等处理
- 腾讯云图片鉴黄集成到C# SQL Server 怎么在分页获取数据的同时获取到总记录数 sqlserver 操作数据表语句模板 .NET MVC后台发送post请求 百度api查询多个地址的经纬度的问题 try{}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会 不会被执行,什么时候被执行,在 return 前还是后? js获取某个日期
- C# GridView 排序及分页
- C# 实现分页查询方法实例
- bmob根据时间排序分页查询多条数据
- 功能不错的分页存储过程,可支持多表查询,任意排序
- oracle数据库分页查询(带排序)
- 支持任意字段排序及多表关联查询的存储过程分页
- 学习:C#一次性执行多条语句(查询的是不同的表 DataTable和DataSet)
- asp.net中对DataTable数据进行排序、检索、合并、分页、统计