Datatable paging,Repeater with Paging

/// <summary>
    /// 塗聚文
    /// 20140225
    /// </summary>
    public partial class DatatablePage : System.Web.UI.Page
    {

        /// <summary>
        /// 测试 分页数据
        /// </summary>
        DataTable pageDt;
        /// <summary>
        /// 
        /// </summary>
        public void geovinduDt()
        {
            pageDt = new DataTable();
            pageDt.Columns.Add("id", typeof(int));
            pageDt.Columns.Add("ddno", typeof(string));
            pageDt.Columns.Add("dd", typeof(string));
            //dtyhdd.Rows.Add("1", "n1");
            //dtyhdd.Rows.Add("2", "n2");
            for (int i = 1; i <= 31; i++)
            {
                //保存到内存表中
                DataRow tr = this.pageDt.NewRow();
                tr["id"] = i;
                tr["ddno"] = i.ToString();
                tr["dd"] = i.ToString() + "内容";
                pageDt.Rows.Add(tr);
            }

        }

        /// <summary>
        /// 隐患地点共分多少页
        /// </summary>
        int verypage = 0;
        /// <summary>
        /// 隐患当前页
        /// </summary>
        int currentPage = 0;
        /// <summary>
        /// 每页显示多少数据
        /// </summary>
        int PageSize = 1;

        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Load(object sender, EventArgs e)
        {            
            
            if (!IsPostBack)
            {

                if (!string.IsNullOrEmpty(Request.QueryString["page"]))
                {
                    currentPage = int.Parse(Request.QueryString["page"]);
                }
                currentPage++;

                this.TextBox1.Text = currentPage.ToString();
                //【初始化数据】
                geovinduDt();
                //【执行分页显示】

                //每次显示10条数据 需要多少次
                verypage = pageDt.Rows.Count / 1;
                //是否有余数
                int numys = pageDt.Rows.Count % 1;
                if (numys > 0)
                {
                    currentPage++;
                }
                //comyhdd.Items.Clear();
                if (currentPage >= pageDt.Rows.Count)
                {
                    Button1.Enabled = false; 
                    return;
                }

                DataRow[] mMatches = pageDt.Select("(id=" + currentPage + ")");
                //DataRow matches = new DataRow();



                string strName = mMatches[0]["dd"].ToString();

                DataSet pDS = new System.Data.DataSet();
                System.Data.DataTable mDT = pageDt.Clone();
                mDT.Clear();
                //mDT.TableName = mTableName;
                //mDT = mDT.Clone();
                for (int i = 0; i < mMatches.Length; i++)
                {
                    mDT.Rows.Add(mMatches[i].ItemArray);
                }
                pDS.Tables.Add(mDT);
                //1
                Repeater1.DataSource = GetPagedTable(pageDt, currentPage, PageSize);
                Repeater1.DataBind();
                //2
                //Repeater1.DataSource = pDS;
                //Repeater1.DataBind();

                this.TextBox1.Text = strName;
                //Repeater1.DataSource = GetPagedTable(pageDt, yhdddqi, PageSize);
                //Repeater1.DataBind();
                this.Label1.Text = currentPage.ToString() + "/" + verypage;

                
            }

        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Button1_Click(object sender, EventArgs e)
        {
            verypage = 1;

              //下一页
            if (!string.IsNullOrEmpty(Request.QueryString["page"]))
            {
                currentPage = int.Parse(Request.QueryString["page"]);
            }
            currentPage++;
            geovinduDt();
            if (currentPage >= pageDt.Rows.Count)
            {
                Button1.Enabled = false; 
                return;
            }

            DataRow[] mMatches = pageDt.Select("(id=" + currentPage + ")");
            //DataRow matches = new DataRow();
            string strName = mMatches[0]["dd"].ToString();
            this.TextBox1.Text = strName;
            string answer = string.Empty;
            if (CheckBoxA.Checked == true)
            {
                answer = "A";
            }
            if (CheckBoxB.Checked == true)
            {
                if (!string.IsNullOrEmpty(answer))
                {
                    answer = answer + "," + "B";
                }
                else
                {
                    answer = "B";
                }
            }
            if (CheckBoxC.Checked == true)
            {
                if (!string.IsNullOrEmpty(answer))
                {
                    answer = answer + "," + "C";
                }
                else
                {
                    answer = "C";
                }
            }
            if (CheckBoxD.Checked == true)
            {
                if (!string.IsNullOrEmpty(answer))
                {
                    answer = answer + "," + "D";
                }
                else
                {
                    answer = "D";
                }
            }
            Jscript.Alert(answer);
            this.Label1.Text = currentPage.ToString() + "/" + verypage;
            Response.Redirect("DatatablePage.aspx?page=" + (currentPage) + "&name=" + strName);

            
    
        }

        /// <summary>
        /// DataTable分页
        /// </summary>
        /// <param name="dt">DataTable</param>
        /// <param name="PageIndex">页索引,注意:从1开始</param>
        /// <param name="PageSize">每页大小</param>
        /// <returns></returns>
        public static DataTable GetPagedTable(DataTable dt, int currentPageIndex, int pageSize)
        {

            //1
            //判断当前索引
            if (currentPageIndex == 0)
                return dt;
            //从数据集合拷贝数据
            DataTable newdt = dt.Copy();
            //数据清空
            newdt.Clear();
            //开始数据索引 = 当前页-1 x 每页大小
            int rowbegin = (currentPageIndex - 1) * pageSize;
            //结束数据索引 = 当前页 x 每页大小
            int rowend = currentPageIndex * pageSize;
            //开始数据索引 大于等于 当前数据集合大小
            if (rowbegin >= dt.Rows.Count)
                return newdt;
            //结束数据索引 大于 当前数据集合大小
            if (rowend > dt.Rows.Count)
                rowend = dt.Rows.Count;
            //遍历数据
            for (int i = rowbegin; i <= rowend - 1; i++)
            {
                DataRow newdr = newdt.NewRow();
                DataRow dr = dt.Rows[i];
                foreach (DataColumn column in dt.Columns)
                {
                    newdr[column.ColumnName] = dr[column.ColumnName];
                }
                newdt.Rows.Add(newdr);
            }

            return newdt;


            //2
            //if (currentPageIndex == 0)
            //{
            //return dt;
            //}

            //DataTable newdt = dt.Clone();// dt.Copy();
             
            //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;
            
        }
    }
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="DatatablePage.aspx.cs" Inherits="ShoppingDeals.Admin.VipHKExamSystem.DatatablePage" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server"><meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Datatable paging,Repeater with Paging </title>
    <meta name="author" content="塗聚文" />
</head>
<body>
    <form id="form1" runat="server">
    <div>        <table style="100%;">
        <tbody>
         <tr>
        <td>id</td>
        <td>name:</td>
        </tr>
            <asp:Repeater ID="Repeater1" runat="server">
        <ItemTemplate> 

        <tr>
        <td><%# Eval("ddno").ToString()%></td>
        <td><%# Eval("dd").ToString()%></td>
        </tr>
            
           
        </ItemTemplate>
        </asp:Repeater>  </tbody>
        </table>  <div><b>選擇答案:</b><asp:CheckBox ID="CheckBoxA" runat="server" Text="A" /><asp:CheckBox ID="CheckBoxB" runat="server"  Text="B"/><asp:CheckBox ID="CheckBoxC" runat="server"  Text="C"/><asp:CheckBox ID="CheckBoxD" runat="server"  Text="D"/></div>
         <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <asp:Button ID="Button1" runat="server" Text="下一頁" OnClick="Button1_Click" />
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label></div>
    </form>
</body>
</html>
  public partial class ExamCNTestDisplay : System.Web.UI.Page
    {
        VIPExamQuestionsBLL vIPExamQuestionsBLL = new VIPExamQuestionsBLL();
        VipExamProjectBLL vipExamProjectBLL = new VipExamProjectBLL();
        VipExamProjectInfo vipExamProjectInfo = new VipExamProjectInfo();
        string examProjectId = string.Empty;
        int fcount = 0;
        int _currentPage = 0;
        int k = 0;
        /// <summary>
        /// 
        /// </summary>
        public int currentPage
        {
            set { _currentPage = value; }
            get { return _currentPage; }
        }

        public int getPage = 1;
        
       DataTable Tissues =new DataTable();
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Load(object sender, EventArgs e)
        {
            
            //DataTable Tissues = (DataTable)Session["Tissues"];
            
            if (Tissues.Rows.Count==0)
            {
                Tissues.Columns.Add("ID", typeof(int));
                Tissues.Columns.Add("Answer", typeof(string));
            }

            if (!IsPostBack)
            {
                examProjectId = Request.QueryString["DisID"];
                if (k == 0)
                {
                    ViewState["ExamProjectId"] = Request.QueryString["DisID"];
                    k++;
                }
                else
                {

                    examProjectId = ViewState["ExamProjectId"].ToString();
                    k++;
                }
                ////Session["BackLogin"] = "ExamProjectList.aspx";
                //if (object.Equals(Session["ExamAdminLogin"], null))
                //{

                //    Jscript.AlertAndRedirect("沒有登錄無權限!", "VIPExamLogin.aspx");
                //}
                if (!string.IsNullOrEmpty(examProjectId))
                {
                    vipExamProjectInfo = vipExamProjectBLL.SelectVipExamProject(int.Parse(examProjectId));
                    if (!object.Equals(vipExamProjectInfo, null))
                    {
                        Page.Title = vipExamProjectInfo.ExamProjectTitle;

                    }

                    PagedDataSource pds = new PagedDataSource();
                    if (!object.Equals(vIPExamQuestionsBLL.SelectVipQuestionsExamProjectDisplay(int.Parse(examProjectId)), null))
                    {
                        pds.DataSource = getdatatable(vIPExamQuestionsBLL.SelectVipQuestionsExamProjectDisplay(int.Parse(examProjectId))).DefaultView;

                        //pds.AllowCustomPaging = true;
                        pds.AllowPaging = true;
                        //pds.AllowServerPaging = true;
                        pds.PageSize = 1;
                        fcount = pds.Count;
                        currentPage = Convert.ToInt32(Request["page"]);
                        //设当前页
                        pds.CurrentPageIndex = currentPage;

                        getPage = currentPage;
                        FormView1.DataSource = pds;
                        FormView1.DataBind();
                        //设几个超链接



                        if (!pds.IsFirstPage)
                        {
                            lnkUp.NavigateUrl = Request.CurrentExecutionFilePath + "?page=" + (currentPage - 1);
                            //LinkButton1.ResolveClientUrl(Request.CurrentExecutionFilePath + "?page=" + (currentPage - 1));
                        }

                        if (!pds.IsLastPage)
                        {
                            //LinkButton1.ResolveClientUrl (Request.CurrentExecutionFilePath + "?page=" + (currentPage - 1));

                            lnkDown.NavigateUrl = Request.CurrentExecutionFilePath + "?page=" + (currentPage + 1) + "&DisID=" + examProjectId;
                            ((Label)FormView1.Controls[0].FindControl("Label3")).Text = (currentPage + 1).ToString();
                            //bool ca = CheckBoxA.Checked;CheckBoxA
                            //bool cb = CheckBoxB.Checked;
                            //bool cc = CheckBoxC.Checked;
                            //bool cd = CheckBoxD.Checked;
                            //FormView1.DefaultMode = FormViewMode.Insert;
                            CheckBox CheckBoxA = (CheckBox)FormView1.Controls[0].FindControl("CheckBoxA");//(CheckBox)FormView1.Row.FindControl("CheckBoxA");//
                            CheckBox CheckBoxB = (CheckBox)FormView1.Controls[0].FindControl("CheckBoxB");
                            CheckBox CheckBoxC = (CheckBox)FormView1.Controls[0].FindControl("CheckBoxC");
                            CheckBox CheckBoxD = (CheckBox)FormView1.Controls[0].FindControl("CheckBoxD");
                            HtmlInputCheckBox CheckBox1 = (HtmlInputCheckBox)FormView1.Controls[0].FindControl("CheckBox1");
                            string answer = string.Empty;
                            if (FormView1.CurrentMode == FormViewMode.ReadOnly)
                            {
                                // Jscript.Alert(CheckBoxB.Checked.ToString());
          


                            if (CheckBoxA.Checked == true)
                            {
                                answer = "A";
                            }
                            if (CheckBoxB.Checked == true)
                            {
                                if (!string.IsNullOrEmpty(answer))
                                {
                                    answer = answer + "," + "B";
                                }
                                else
                                {
                                    answer = "B";
                                }
                            }
                            if (CheckBoxC.Checked == true)
                            {
                                if (!string.IsNullOrEmpty(answer))
                                {
                                    answer = answer + "," + "C";
                                }
                                else
                                {
                                    answer = "C";
                                }
                            }
                            if (CheckBoxD.Checked == true)
                            {
                                if (!string.IsNullOrEmpty(answer))
                                {
                                    answer = answer + "," + "D";
                                }
                                else
                                {
                                    answer = "D";
                                }
                            }
                        }
                        //if (((CheckBox)FormView1.FindControl("CheckBoxA")).Checked == true)
                        //{
                        //    Jscript.Alert("ok");
                        //}
                            string id = ((Label)FormView1.Controls[0].FindControl("Label2")).Text;
                            Tissues.Rows.Add(int.Parse(id), answer);
                            Jscript.Alert(id + "," + answer + "," + CheckBox1.Checked.ToString());

                            CheckBoxA.Checked = false;
                            CheckBoxB.Checked = false;
                            CheckBoxC.Checked = false;
                            CheckBoxD.Checked = false;

                        }
                        else
                        {
                            ((Label)FormView1.Controls[0].FindControl("Label3")).Text = (currentPage + 1).ToString();
                            lnkDown.Visible = false; //顯示完不顯示,而顯示提交按鈕
                            this.Button1.Visible = true;
                            // Jscript.Alert("end");
                            Session.Add("Tissues", Tissues);
                            //(DataTable)Session["Tissues"] = Tissues;
                            string id = ((Label)FormView1.Controls[0].FindControl("Label2")).Text;

                            if (Tissues.Rows.Count > 0)
                            {
                                Jscript.Alert(Tissues.Rows[0][0].ToString());
                            }
                        }

                    }
                    else
                    {
                        Jscript.Alert("還沒有添加試題");
                        return;
                    }


                    // FormView1.DataSource = vIPExamQuestionsBLL.SelectVipQuestionsExamProjectDisplay(1);
                    // FormView1.DataBind();
                }
                else
                {
                    Jscript.Alert("沒有查找相關關項目的數據!");
                    return;
                }

            }
           
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void FormView1_PageIndexChanging(object sender, FormViewPageEventArgs e)
        {
            //FormView1.DataSource=getdatatable(vIPExamQuestionsBLL.SelectVipQuestionsExamProjectDisplay(int.Parse(examProjectId))).DefaultView;
            //FormView1.DataBind();
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Button1_Click(object sender, EventArgs e)
        {
            if (FormView1.PageIndex == fcount)
            {
                Jscript.Alert("end");
                DataTable table = Session["Tissues"] as DataTable;

                if (table.Rows.Count>0)
                {
                    
                    //read table and push in Sqlserver
                    Jscript.Alert(table.Rows[0][0].ToString());
                }
                else
                {
                    //session either expired or invalid page being accessed.
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="dt"></param>
        /// <returns></returns>
        private DataTable getdatatable(DataTable table)
        {
            if (!object.Equals(table, null))//
            {
                DataTable tableDec = new DataTable();

                #region ExamQuestionsProject,ExamQuestionsTitle,ExamQuestionsA,ExamQuestionsB,ExamQuestionsC,ExamQuestionsD,ExamQuestionsAnswer,ExamQuestionsDesc,ExamProjectTitle
                tableDec.Columns.Add("ExamQuestionsID", typeof(int));
                tableDec.Columns.Add("ExamQuestionsProject", typeof(int));
                tableDec.Columns.Add("ExamQuestionsTitle", typeof(string));
                tableDec.Columns.Add("ExamQuestionsA", typeof(string));
                tableDec.Columns.Add("ExamQuestionsB", typeof(string));
                tableDec.Columns.Add("ExamQuestionsC", typeof(string));//在職狀態
                tableDec.Columns.Add("ExamQuestionsD", typeof(string));
                tableDec.Columns.Add("ExamQuestionsAnswer", typeof(string));
                tableDec.Columns.Add("ExamQuestionsDesc", typeof(string));
                tableDec.Columns.Add("ExamProjectTitle", typeof(string));
                tableDec.Columns.Add("ExamProjectCheck", typeof(bool));

                #endregion
                foreach (DataRow row in table.Rows) // Loop over the rows.
                {

                    bool check = false;
                    tableDec.Rows.Add(row["ExamQuestionsID"], row["ExamQuestionsProject"], row["ExamQuestionsTitle"], row["ExamQuestionsA"], row["ExamQuestionsB"], row["ExamQuestionsC"], row["ExamQuestionsD"], row["ExamQuestionsAnswer"], row["ExamQuestionsDesc"], row["ExamProjectTitle"], check);

                }


                return tableDec;
            }
            else
            {
                return null;
            }


            //DataColumn col = new DataColumn("check", typeof(bool));
            //dt.Columns.Add(col);
            ////dt.Columns.AddRange(col);
            ////dt.Columns.AddRange("check", typeof(bool));

            //for (int i=0;i<dt.Rows.Count;i++)
            //{
            //    DataRow row = dt.NewRow();
            //    row["check"] = false;
            //    dt.Rows.Add(row);
            //}


            ////for(int i=0;i<dt.Rows.Count;i++)
            ////{
                
               
            ////}
            //return dt;
        }
    }
原文地址:https://www.cnblogs.com/geovindu/p/3570523.html