• C# 分頁


        public class PagingHelper
        {
    
            public static DataTable _dt;
    
            //每页显示多少条
            public static int pageNum = 20;
            //当前是第几页
            public static int pIndex = 1;
            //对象
            //private DataGrid grdList;
            //最大页数
            public static int MaxIndex = 1;
            //一共多少条
            private int allNum = 0;
            #region 初始化数据
    
            /// <summary>
            /// 初始化数据
            /// </summary>
            /// <param name="grd"></param>
            /// <param name="dtt"></param>
            /// <param name="Num"></param>
            public void ShowPages(DataTable ds, DataGrid dtList,int Num, TextBox txtCurtPage, Button btnGo)
            {
                if (ds == null || ds.Rows.Count == 0)
                    return;
                if (ds.Rows.Count == 0)
                    return;
                DataTable dt = ds;
                _dt = dt.Clone();
                //this.grdList = grd;
                pageNum = Num == 0 ? 20 : Num;
                pIndex = 1;
                foreach (DataRow r in dt.Rows)
                    _dt.ImportRow(r);
             
                SetMaxIndex();
                ReadDataTable((DataGrid)dtList);//繪製 DataGrid
                if (MaxIndex > 1)
                {
                    //激活按鈕
                    abledBtn((TextBox)txtCurtPage, (Button)btnGo);
                    //this.pageGo.IsReadOnly = false;
                    //this.btnGo.IsEnabled = true;
                }
            }
    
            public void abledBtn(TextBox txtCurtPage, Button btnGo)
            {
                txtCurtPage.IsReadOnly = false;
                btnGo.IsEnabled = true;
            }
    
            #endregion
    
            #region 画数据  OK
    
            /// <summary>
            /// 画数据
            /// </summary>
            public void ReadDataTable(DataGrid grdList)
            {
                //pIndex = pIndex;
                try
                {
                    DataTable tmpTable = new DataTable();
                    tmpTable = _dt.Clone();
                    int first = pageNum * (pIndex - 1);
                    first = (first > 0) ? first : 0;
                    //如果总数量大于每页显示数量
                    if (_dt.Rows.Count >= pageNum * pIndex)
                    {
                        for (int i = first; i < pageNum * pIndex; i++)
                            tmpTable.ImportRow(_dt.Rows[i]);
                    }
                    else
                    {
                        for (int i = first; i < _dt.Rows.Count; i++)
                            tmpTable.ImportRow(_dt.Rows[i]);
                    }
                    grdList.ItemsSource = null;
                    grdList.ItemsSource = tmpTable.DefaultView;
                    tmpTable.Dispose();
                }
                catch
                {
                    //return "出錯";
                    //MessageBox.Show("错误");
                }
                finally
                {
                    //DisplayPagingInfo();
                }
            }
    
            #endregion
    
            #region 画每页显示等数据  已置于前台
            //Old  No Used
    
            /// <summary>
            /// 画每页显示等数据
            /// </summary>
            public void DisplayPagingInfo(Button btnPrev, Button btnNext, Button btnFirst, Button btnLast)
            {
                if (pIndex == 1)
                {
                    btnPrev.IsEnabled = false;
                    btnFirst.IsEnabled = false;
                }
                else
                {
                    btnPrev.IsEnabled = true;
                    btnFirst.IsEnabled = true;
                }
                if (pIndex == MaxIndex)
                {
                    btnNext.IsEnabled = false;
                    btnLast.IsEnabled = false;
                }
                else
                {
                    btnNext.IsEnabled = true;
                    btnLast.IsEnabled = true;
                }
                //tbkRecords.Text = string.Format("每页{0}条/共{1}条", pageNum, this.allNum);
                int first = (pIndex - 4) > 0 ? (pIndex - 4) : 1;
                int last = (first + 9) > MaxIndex ? MaxIndex : (first + 9);
                //this.grid.Children.Clear();
                //獲取列
                //for (int i = first; i <= last; i++)
                //{
                //    ColumnDefinition cdf = new ColumnDefinition();
                //    this.grid.ColumnDefinitions.Add(cdf);
                //    TextBlock tbl = new TextBlock();
                //    tbl.Text = i.ToString();
                //    tbl.Style = FindResource("PageTextBlock3") as Style;
                //    tbl.MouseLeftButtonUp += new MouseButtonEventHandler(tbl_MouseLeftButtonUp);
                //    tbl.MouseLeftButtonDown += new MouseButtonEventHandler(tbl_MouseLeftButtonDown);
                //    if (i == pIndex)
                //        tbl.IsEnabled = false;
                //    Grid.SetColumn(tbl, this.grid.ColumnDefinitions.Count - 1);
                //    Grid.SetRow(tbl, 0);
                //    this.grid.Children.Add(tbl);
                //}
            }
    
            #endregion
    
            #region 首页
    
            /// <summary>
            /// 首页
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            public void btnFirst_Method(DataGrid grdList)
            {
                pIndex = 1;
    
                ReadDataTable(grdList);
            }
    
            /// <summary>
            /// 首页
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            //private void btnFirst_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
            //{
            //    e.Handled = true;
            //}
    
            #endregion
    
            #region 上一页
            /// <summary>
            /// 上一页
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            public void btnPrev_Method(DataGrid grdList)
            {
                if (pIndex <= 1)
                    return;
                pIndex--;
                ReadDataTable(grdList);
            }
    
            /// <summary>
            /// 上一页
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            //private void btnPrev_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
            //{
            //    e.Handled = true;
            //}
    
            #endregion
    
            #region 下一页
    
            /// <summary>
            /// 下一页
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            public void btnNext_Method(DataGrid grdList)
            {
                if (pIndex >= MaxIndex)
                    return;
                pIndex++;
                ReadDataTable(grdList);
            }
    
            /// <summary>
            /// 下一页
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            //private void btnNext_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
            //{
            //    e.Handled = true;
            //}
    
            #endregion
    
            #region 未页
    
            /// <summary>
            /// 未页
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            public void btnLast_Method(DataGrid grdList)
            {
                pIndex = MaxIndex;
                ReadDataTable(grdList);
            }
    
            /// <summary>
            /// 未页
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            //private void btnLast_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
            //{
            //    e.Handled = true;
            //}
    
            #endregion
    
            #region 设置最多大页面
    
            /// <summary>
            /// 设置最多大页面
            /// </summary>
            public void SetMaxIndex()
            {
                //多少页
                int Pages = _dt.Rows.Count / pageNum;
                if (_dt.Rows.Count != (Pages * pageNum))
                {
                    if (_dt.Rows.Count < (Pages * pageNum))
                        Pages--;
                    else
                        Pages++;
                }
                MaxIndex = Pages;
                this.allNum = _dt.Rows.Count;
            }
    
            #endregion
    
            #region 跳转到多少页
    
            /// <summary>
            /// 跳转到多少页
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            public void btnGo_Method(TextBox txtCurtPage, DataGrid grdList)
            {
                if (IsNumber(txtCurtPage.Text))
                {
                    int pageNum = int.Parse(txtCurtPage.Text);
                    if (pageNum > 0 && pageNum <= MaxIndex)
                    {
                        pIndex = pageNum;
                        ReadDataTable(grdList);
                    }
                    else if (pageNum > MaxIndex)
                    {
                        pIndex = MaxIndex;
                        ReadDataTable(grdList);
                    }
                }
                else
                {
                    txtCurtPage.SelectAll();
                    txtCurtPage.Focus();
                }
            }
            #endregion
    
            public Regex RegNumber = new Regex("^[0-9]+$");
    
            #region 判断是否是数字
            /// <summary>
            /// 判断是否是数字
            /// </summary>
            /// <param name="valString"></param>
            /// <returns></returns>
            public bool IsNumber(string valString)
            {
                Match m = RegNumber.Match(valString);
                return m.Success;
            }
            #endregion
        }
    

      

    此分頁,實際是將獲取到的DataTable保存在內存中,然後根據頁碼獲取數據,

     附DataRow[] 轉 DataTable 取表結構方法

             /// <summary>
            /// DataRow[] 轉 DataTable 取表結構
            /// </summary>
            /// <param name="cloneDt"></param>
            /// <param name="inDt"></param>
            /// <returns></returns>
            public DataTable TransferDto(DataTable cloneDt, DataRow[] inDtRow)
            {
                try
                {
                    DataTable outDt = new DataTable("dt1");
                    outDt = cloneDt.Clone();
                    foreach (DataRow row in inDtRow)
                    {
                        outDt.ImportRow(row);
                    }
                    return outDt;
                    #region Others 1
                    /*
                    DataTable dt=new DataTable();
                    for (int i= 0; i< dg.Columns.Count; i++)
                    {
                        DataColumn dc = new DataColumn(dg.Columns[i].Name.ToString());
                        dt.Columns.Add(dc);
                    }
                    for (int i = 0; i< dg.Rows.Count; i++)
                    {
                        DataRow dr = dt.NewRow();
                        for (int j = 0; j < dg.Columns.Count; j++)
                        {
                            dr[j] = dg.Rows[i].Cells[j].Value.ToString();
                        }
                        dt.Rows.Add(dr);
                    }
                    return dt;
                     */
                    #endregion
                }
                catch (Exception lo_Ex)
                {
                    throw new Exception("TransferDto is Fail,ErrMsg:=" + lo_Ex.Message.Substring(0, 200));
                }
            }    
    

      

  • 相关阅读:
    运营设计方法论
    使用 typescript ,提升 vue 项目的开发体验(2)
    PAT 1078. 字符串压缩与解压
    PAT 1077. 互评成绩计算
    PAT 1076. Wifi密码
    PAT 1075. 链表元素分类
    PAT 1074. 宇宙无敌加法器
    PAT 1073. 多选题常见计分法
    PAT 1072. 开学寄语
    PAT 1071. 小赌怡情
  • 原文地址:https://www.cnblogs.com/aDoc/p/12858740.html
Copyright © 2020-2023  润新知