.net中实现aspnetpager分页

第一步首先导入aspnetpager控件,然后再把他从工具箱中拖出,代码如下:

 <webdiyer:AspNetPager ID="aspnetpager1" runat="server" CustomInfoTextAlign="Left"
            FirstPageText="首页 " LastPageText ="末页" NextPageText=" 下一页" NumericButtonCount ="5"
            PageIndexBoxType="TextBox" PrevPageText="上一页 " ShowPageIndexBox ="Never" PageSize="20"
            AlwaysShow="True" CssClass="paginator" CurrentPageButtonClass="cpb" Wrap="True"
            BorderStyle="None" Width="100%" UrlPaging="True" CustomInfoClass="info" CustomInfoHTML =""
            CustomInfoSectionWidth="0px" OnPageChanged="aspnetpager1_PageChanged">
        </webdiyer: AspNetPager>
并且在页面的上部要引用下面代码:
<%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %>
之后要在引用里添加aspnetpager.dll引用
 
然后在后台page_load里添加以下分页代码:
                    Page_gkxx sp = new Page_gkxx();
 
                    aspnetpager1.EnableUrlRewriting = true ;
                aspnetpager1.UrlRewritePattern = "/zuowen/list-" + ParentTypeId + "-" + TypeId + "-" + GradeId + "-{0}.html" ;
                sp.InitBindData(Repeater1, aspnetpager1, "zuowen" , "id" , Sear(), GetFields());
其中InitBindData方法代码为:
public void InitBindData( Control c, Wuqi.Webdiyer. AspNetPager aspnet, string tbname, string tbcolumn, stringsqlwhere,string sfields)
        {
            aspnet.RecordCount = GetRows(tbname, sqlwhere);
            if (aspnet.RecordCount > 0)
            {
                string contype = c.GetType().ToString();
 
                DataSet ds = GetList(tbname, tbcolumn,sfields,aspnet.PageSize, aspnet.CurrentPageIndex, sqlwhere);
 
 
                if (ds.Tables[0].Rows.Count > 0)
                {
                    if (contype.IndexOf("GridView" ) != -1)
                    {
                        GridView gv = (GridView )c;
                        gv.DataSource = ds;
                        gv.DataBind();
                    }
                    else if (contype.IndexOf( "Repeater") != -1)
                    {
                        Repeater rep = (Repeater )c;
                        rep.DataSource = ds;
                        rep.DataBind();
                    }
                    else if (contype.IndexOf( "DataList") != -1)
                    {
                        DataList dl = (DataList )c;
                        dl.DataSource = ds;
                        dl.DataBind();
                    }
                    c.Visible = true ;
                }
            }
            else
            {
                c.Visible = false ;
            }
 
        }
private int GetRows( string tablename, string strwhere)
        {
            string strSql = "select count(1) from " + tablename + " with(nolock) where " + strwhere + "" ;
            return int .Parse( DbHelperSQL.GetSingle(strSql).ToString());
        }
        /// <summary>
        /// 分页获取数据列表
        /// </summary>
        /// <param name="PageSize"></param>
        /// <param name="PageIndex"></param>
        /// <param name="strWhere"></param>
        /// <returns></returns>
        public DataSet GetList( string tablename, string keyname, string sfields, int  PageSize, int PageIndex, stringstrWhere)
        {
            SqlParameter [] parameters = {
                                                                                 new SqlParameter ( "@tblName"SqlDbType .VarChar, 255),
                                                                                 new SqlParameter ( "@fldName"SqlDbType .VarChar, 255),
                    new SqlParameter ( "@sFields", SqlDbType .VarChar,1000),
                                                                                 new SqlParameter ( "@PageSize"SqlDbType .Int),
                                                                                 new SqlParameter ( "@PageIndex"SqlDbType .Int),
                                                                                 new SqlParameter ( "@IsReCount"SqlDbType .Bit),
                                                                                 new SqlParameter ( "@OrderType"SqlDbType .Bit),
                                                                                 new SqlParameter ( "@strWhere"SqlDbType .VarChar,1000),
                                                                                };
            parameters[0].Value = tablename;
            parameters[1].Value = keyname;
            parameters[2].Value = sfields;
            parameters[3].Value = PageSize;
            parameters[4].Value = PageIndex;
            parameters[5].Value = 0;
            parameters[6].Value = 1;
            parameters[7].Value = strWhere;
            return DbHelperSQL .RunProcedure( "Up_GetRecordByPage", parameters, "ds" );
        }
这是在DbHelperSQL 中的方法:
  /// <summary>
    /// 执行存储过程返回dataset
    /// </summary>
    /// <param name="storedProcName"> 存储过程名 </param>
    /// <param name="parameters"> 存储过程参数 </param>
    /// <param name="tableName"> DataSet结果中的表名 </param>
    /// <returns> DataSet</returns>
    public static DataSet RunProcedure( string storedProcName, IDataParameter [] parameters, string tableName)
    {
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            DataSet dataSet = new DataSet();
            connection.Open();
            SqlDataAdapter sqlDA = new SqlDataAdapter();
            sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);
            sqlDA.Fill(dataSet, tableName);
            connection.Close();
            return dataSet;
        }
    }
 
    /// <summary>
    /// 执行一条计算查询结果语句,返回查询结果(object)。
    /// </summary>
    /// <param name="SQLString"> 计算查询结果语句 </param>
    /// <returns> 查询结果(object) </returns>
    public static object GetSingle( string SQLString)
    {
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            using (SqlCommand cmd = new SqlCommand(SQLString, connection))
            {
                try
                {
                    connection.Open();
                    object obj = cmd.ExecuteScalar();
                    if ((Object .Equals(obj, null)) || ( Object .Equals(obj, System.DBNull .Value)))
                    {
                        return null ;
                    }
                    else
                    {
                        return obj;
                    }
                }
                catch (System.Data.SqlClient.SqlException e)
                {
                    connection.Close();
                    connection.Dispose();
 
                    throw new Exception(e.Message);
                }
 
            }
        }
    }
这是Sear()方法的代码:
         /// <summary>
        /// 根据传值进行搜索分页
        /// </summary>
        /// <returns></returns>
        private string Sear()
        {
            StringBuilder sb = new StringBuilder();
            sb.Append( "1=1" );
            if (ParentTypeId != 0)
                sb.AppendFormat( " and ptypeid={0}" ,ParentTypeId);
            if (TypeId != 0)
                sb.AppendFormat( " and typeid={0}" ,TypeId);
            if (GradeId != 0)
                sb.AppendFormat( " and gid={0}" , GradeId);
            return sb.ToString();
        }
这是获取分页中显示的内容代码:
  private string GetFields()
        {
            return "id,title,addtime,Content,typeid,ptypeid,views" ;
        }
 
接着添加分页的事件:
private void ZuowenHotBind()
        {
            DataSet ds = ZuowenDal .GetList(10, "addtime>'" + DateTime .Now.AddMonths(-3).ToString() + "'" "views desc" );
            if (ds.Tables[0].Rows.Count > 0)
            {
                RepHot.DataSource = ds;
                RepHot.DataBind();
            }
        }
以上操作基本完成了aspnetpager分页是实现,又不懂的问题可以直接评论回复。
(代码用到了封装的DbHelperSQL.cs)
posted @ 2015-06-12 14:47  横十条  阅读(683)  评论(0编辑  收藏  举报