DataTable 中的查询、排序及分页(c#)

摘要:
totalCount:topNum):totalCount;对于{dt.ImportRow;}}returndt;}/////查询和排序sourceDt,并自由设置显示项的数量//--selecttopfromsourceD到rstrSelectorbystrSort////原始数据表//查询条件//排序字段,不添加订单依据//显示数量//newDataTablepublicstaticDataTableSelectTop{DataTabledt=sourceDt.Clone();boolnoSort=string.IsNullOrEmpty;DataRow[]dr=noSort?sourceDt.Select:sourceDt.Select;foreach{dt.Rows.add;}intdtCount=dt。排。计数如果{//计算要显示intnum=count˃0的项目数?
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;
            }
        }

免责声明:文章转载自《DataTable 中的查询、排序及分页(c#)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇delphi treeview添加节点_一片树叶自动写文章的智能软件(基于AI写作)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

实现DataTables搜索框查询结果高亮显示

DataTables是封装好的HTML表格插件,丰富了HTML表格的样式,提供了即时搜索、分页等多种表格高级功能。用户可以编写很少的代码(甚至只是使用官方的示例代码),做出一个漂亮的表格以展示数据。关于DataTables的更多信息,请查看:http://www.datatables.club/、https://datatables.net/。下图将要展示...

DataTables warning : Requested unknown parameter '5' from the data source for row 0

在该项目中我使用了jquery.dataTables.js来作为我的前端数据表格。 表格的官网地址:https://www.datatables.net/ 一、jsp部分代码片段如下: 1 <table id="dynamic-table" 2 class="table tabl...

Jquery DataTables 获取表格数据及行数据

注意table变量是 1.jQuery DataTables 行号获取 $("#example tbody tr").on("click", function() {var index = $(this).context._DT_RowIndex; //行号});   2.获取表格所有数据 function getTableContent(){     ...

关于 angular 项目 结合 RequireJs 的问题整理

1、在 将 依赖的js 通过 require.config 设置 映射的时候,结合dataTables.bootstrap.js和 jquery.dataTables.js 时 遇到如下报错: Uncaught Error: Script error for "datatables.net", needed by: dataTablesbootstrap;...

bootstrap DataTable 插件的使用

//引入css和js文件  <link rel="stylesheet" href="http://t.zoukankan.com/${ctx}/static/plugins/datatables/dataTables.bootstrap.css"> <script src="http://t.zoukankan.com/${ctx}/...