PagedDataSourceオブジェクト実装DataListページング

3277 ワード

一、説明
PagedDataSourceオブジェクトは、データ・ソースのページングに使用されるクラスであり、ページング効果やレイアウトをより柔軟に制御できます.GridViewコントロールではページング機能が用意されていますが、DataListでは専用のページング機能がない場合、PagedDataSourceオブジェクトを使用できます.
二、ページング機能のフロントレイアウト(テスト)

    
       

   >
   
三、ページング機能のバックグラウンドコード
namespace DataList  
{
    public partial class index : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                ViewState["pageindex"] = "0";
                BindData();
            }
        }

        private void BindData()
        {
            string strSql = "server=.;database=post;uid=sa;pwd=123";
            SqlConnection conn = new SqlConnection(strSql);
            conn.Open();
            SqlCommand com = new SqlCommand();
            com.Connection = conn;
            com.CommandType = CommandType.Text;
            string str = "select * from userInfo";   //     (username,pwd)
            com.CommandText = str;
            SqlDataAdapter da = new SqlDataAdapter(com);
            DataTable dt = new DataTable();

            da.Fill(dt);

            if (dt != null && dt.Rows.Count > 0)
            {
                PagedDataSource pageDs = new PagedDataSource();  //           
                pageDs.DataSource = dt.DefaultView;  //DefaultView      、  、  、       DataTable             。
                pageDs.AllowPaging = true;
                pageDs.PageSize = 2;
                pageDs.CurrentPageIndex = int.Parse(ViewState["pageindex"].ToString());
                if (!pageDs.IsFirstPage)
                {
                    linkBtnPre.Visible = true;
                }
                else
                {
                    linkBtnPre.Visible = false;
                }
                if (!pageDs.IsLastPage)
                {
                    linkBtnNext.Visible = true;
                }
                else
                {
                    linkBtnNext.Visible = false;
                }
                dlData.DataSource = pageDs;
                dlData.DataBind();
            }
        }

        protected void IndexChanging(object sender, EventArgs e)
        {
            string strCommand = ((LinkButton)sender).CommandArgument.ToString();
            int pageindex = int.Parse(ViewState["pageindex"].ToString());
            if (strCommand == "pre")
            {
                pageindex = pageindex - 1;
            }
            else
            {
                pageindex = pageindex + 1;
            }
            ViewState["pageindex"] = pageindex;
            BindData();
        }
    }
}