.NET에서 프로그램 페이징을 구현하는 방법

零下一度
풀어 주다: 2017-06-24 09:59:48
원래의
1979명이 탐색했습니다.

aspx

查询

 

<%#rptList.Items.Count == 0 ? "暂无记录" : ""%>

显示 OnTextChanged="txtPageNum_TextChanged" AutoPostBack="True">条/页

CodeBehind

네임스페이스

public 부분 클래스 xxx : Web.UI.ManagePage
{

protected int totalCount;//총 레코드 수
protected 티페이지;/ /현재 페이지
protected int pageSize;//페이지당 데이터 크기
protected string 키워드 = string.Empty;//쿼리 조건

protected void Page_Load(객체 전송자, EventArgs e)
{

   this.keywords = Utils..GetQueryString("keywords");//쿼리 조건 가져오기
This.pageSize = GetPageSize(10); //각 페이지의 데이터 크기 설정

G if (! Page.ispostback) {

RPTBIND ("키워드에 따라 통합된 문의문", "필드 ASC/DESC 정렬")

}}}}

private void RptBind(string _strWhere, string _orderby)                                                                                                   words;                          BLL.Business bll = new BLL.Business(); this.rptList.DataSource = bll.GetList(this.pageSize, this.page, _strWhere, _orderby, out totalCount,out totalIncome); this.rptList.DataBind();

lblTotalIncome.Text = Math.Round(totalIncome, 3).ToString();

        txtPageNum.Text = this.pageSize.ToString(); string pageUrl = Utils.CombUrlTxt("xxx.aspx", "keywords={0}&page= {1}", this.Keywords, "__id__"); private int GetPageSize(int _default_size)                                     ~ ~                   return _pagesize;                                                                                    ~

protected void lbtnSearch_Click(객체 발신자, EventArgs e)
        {
            Response.Redirect(Utils.CombUrlTxt("xxx.aspx", "keywords={0}", txtKeywords.Text));
       }

protected void txtPageNum_TextChanged(객체 전송자, EventArgs e)
        {
            int _pagesize;
            if (int.TryParse(txtPageNum.Text.Trim(), out _pagesize))
            {
               if (_pagesize > 0)
               {
                  Utils.WriteCookie("detail_page_size", "NovelPage", _pagesize.ToString(), 14400);
              }
           }
           Response.Redirect(Utils.CombUrlTxt("xxx.as px", "키워드={0}", 이 .keywords));
        }

}

Utils

命名空间

공개 클래스 Utils
{

공개 정적 문자열 GetQueryString(string strName)
        {
            return GetQueryString( strName, false);
        }

public static string GetQueryString(string strName, bool sqlSafeCheck)
        {
           if (HttpContext.Current.Request.QueryString[strName] == null)
               return " ";

            if ( sqlSafeCheck && !IsSafeSqlString(HttpContext.Current.Request.QueryString[strName]))
               return "안전하지 않은 문자열";

           return HttpContext.Current.Request.QueryString[strName];
        }

public static bool IsSafeSqlString(string str)
        {
            return !Regex.IsMatch(str, @"[-|;|,|/|(|)|[|]|}|{|%|@|*|!|']");
}

public static int GetQueryInt(string strName, int defValue)
        {
            return StrToInt(HttpContext.Current.Request.QueryString[strName], defValue);
        }

public static int StrToInt(문자열 표현식, int defValue)
        {
            if (string.IsNullOrEmpty(expression) || Expression.Trim().Length >= 11 || !Regex.IsMatch(expression.Trim(), @"^([-]|[0-9])[0-9]*(.w*)?$"))
               return defValue;

            int rv;
           if (Int32.TryParse(표현식, out rv ))
               return rv;

            return Convert.ToInt32(StrToFloat(expression, defValue));
        }

public static float StrToFloat(문자열 표현식, float defValue)
       
            if ((표현식 == null) | | (식.길이 > 10))
               return defValue;

            float intValue = defValue;
           if (표현식 != null)
           {
              bool IsFloat = Regex.IsMatch(표현식, @"^([-]|[ 0-9])[0-9]*(.w*)?$");
               if (IsFloat)
                 float.TryParse(expression, out intValue);
           return intValue ;
        }

공용 정적 문자열 CombUrlTxt(string _url, string _keys, params string[] _values)
        {
            StringBuilder urlParams = new StringBuilder();
           try
                        string[] keyArr = _keys.Split(new char[] { ' &' });
               for (int i = 0; i < keyArr.Length; i++)
               {
                  if (!string.IsNullOrEmpty(_values[i]) && _values[i] != "0")
                    { ㅋㅋㅋ         }
               }
               if (!string.IsNullOrEmpty(urlParams. ToString()) && _url.IndexOf("?") == -1)
                   urlParams.Insert(0, "?");
           }
           catch
           {
                return _url;
            }
            return _url + DelLastChar(urlParams. ToString(), "&");
        }



공개 정적 문자열 UrlEncode(string str)
        {

           if (string.IsNullOrEmpty(str))

            {               "" 반환;
            }
            str = str.Replace ("'", "");
           return HttpContext.Current.Server.UrlEncode(str);
        }



//删除最后结尾的指定字符后的符

공개 정적 문자열 DelLastChar(문자열 str , 문자열 strchar)        {

            if (string.IsNullOrEmpty(str))

              return "";            if (str.LastIndexOf(strchar) >= 0 && str.LastIndexOf(strchar) == str .길이 - 1)
{
              return str.Substring(0, str.LastIndexOf(strchar));
            }
           return str;
        }



//返回分页页码

공개 정적 문자열 OutPageList(int pageSize, int pageIndex, int totalCount, string linkUrl, int centSize)
        {
           //计算页数
            if (totalCount < 1 || pageSize < 1)
            {
               반환 "" ;
           }
            int pageCount = totalCount / pageSize;
            if (pageCount < 1)
           {
             return   }
            if (totalCount % pageSize > 0)
            {
               pageCount += 1;
           }
            if (pageCount             {
                return "";
            }
            StringBuilder pageStr = new StringBuilder();
            string pageId = "__id__";
            string firstBtn = "上一页»";
            string lastBtn = "下一页»";
            string firstStr = "";
            string lastStr = "
" + pageCount.ToString() + "";

            if (pageIndex <= 1)
            {
               firstBtn = "«上一页 ";
           }
            if (pageIndex >= pageCount)
           {
               lastBtn = "下一页»";
            }
            if (pageIndex == 1) ㅋㅋㅋ
                lastStr = "" + pageCount.ToString() + "";
            }
int firstNum = pageIndex - (centSize / 2); //가운데부터 시작하는 페이지 번호
 가운데 끝의 페이지 번호
                                                            |
if (pageIndex>= centSize)
(int i = firstnum; i & lt; = lastnum; i ++)
; / span & gt; ");
}
else}}}
if (pagecount -pageindex & gt; centsize- ((centsize / 2))). ㅋㅋㅋ            pageStr.Append(lastStr + lastBtn);
              return pageStr.ToString(); ;

공개 정적 문자열 GetCookie(문자열 strName, 문자열 키)
        {
            if (HttpContext.Current.Request.Cookies != null && HttpContext.Current.Request.Cookies[strName] != null && HttpContext.Current.Request.Cookies [strname] [key]! = null)
return urldecode (httpcontext.current.request.cookies [strname] [key] .toString ());

return "";
}





public static string urldecode ( string str)
        {
           if (string.IsNullOrEmpty(str))
           {
               return "";

           HttpContext를 반환합니다. Current.Server.UrlDecode(str);

        }


public static void WriteCookie(string strName , 문자열 키, 문자열 strValue, int 만료)
        {
            HttpCookie cookie = HttpContext.Current.Request.Cookies[strName];
           if (cookie == null)
             쿠키 = 새로운 HttpCookie(strName);
            }
            쿠키 [key] = UrlEncode(strValue);
            cookie.Expires = DateTime.Now.AddMinutes(expires);
            HttpContext.Current.Response.AppendCookie(cookie);

       }

}

 

비즈니스

命名 空间



 공개 클래스 Business
    {

        비공개 읽기 전용 DAL.xxx xxxDal;



public Business()
        {

           xxxDal = 새로운 DAL.xxx();

  }



공개 목록 GetList(int pageSize, int pageIndex, string strWhere, string fileOrder, out int RecordCount,outdecimal totalIncome)
        {
           return xxxDal.GetList(pageSize, pageIndex, strWhere, fileOrder, out RecordCount,out totalIncome);

        }

}

 

DAL

命name空间


공개 부분 클래스 xxx

{🎜🎜

공개 목록 GetList(int pageSize, int pageIndex, string strWhere, string fileOrder, out int RecordCount,outdecimal totalIncome)
        {
           totalIncome = 0;
            StringBuilder strSql = new StringBuilder();
            strSql.Append(@ "a.oid를 선택하고, ocreatetime,a.oaccname,a.oacctel,(uid=a.ouid인 AppUser에서 ucardnum 선택) ucardnum,c.pname,
                                  otype, ISNULL(b.corealmoney,0) as corealmoney, ISNULL(b.cooid,0 ) as cooid,
                          omoney, ISNULL(coprate,0) coprate, ISNULL(codrawfee,0) codrawfee, ISNULL(codowndrawfee,0) codowndrawfee, ISNULL(d.uname,'无') as uname,
                             ISNULL(b.couserrate ,0) couserrate로,
                           ROW_NUMBER() over(ocreatetime 설명으로 주문) r from xxx a left Join
                         (coid,coprate,comoney,corealmoney,codowndrawfee,codraw 선택 costatus=1)b
인 경우 xxx의 수수료,쿠페리드,코우저 요율 a.oid=b.cooid에서 a.opid=c.pid
에서 xxx c에 가입                           왼쪽에서 b.couupperid=d.[uid]에서 xxx d에 가입(a.ostatus=1 ");
            if (strWhere.Trim( ) != "")
           {
                strSql.Append(strWhere);
            }
           (var context = DataBaseConnection.GetSdkBaseConnection()) 사용
            {
               RecordCount = context.ExecuteScalar(PagingHelper.CreateCountingSql(strSql.ToString( )));
                if (recordCount > 0)
               {
                   StringBuilder strSql2 = new StringBuilder();
                  strSql2.Append(@"왼쪽 조인에서 SUM(corealmoney)을 선택하세요
                                   (xxx에서 cooid,coprate,corealmoney,codowndrawfee,comoney,codrawfee,couupperid,couserrate 선택) 여기서 costatus=1)b
                                  a.oid=b.cooid에서 xxx c에 가입 a.opid=c.pid
에서                                        왼쪽에서 b.couupperid=d에 가입합니다. [uid] 여기서 a.ostatus=1 ");
                   if (strWhere.Trim() != "")
                   {
strSql2.Append(strWhere); ql.ToString(), fileOrder)).ToList();
                                                  

}

PagingHelper

namespace

// ROW_NUMBER 고효율 페이징(만 MSSQL2005 이상 지원)

public static class PagingHelper

{

// Get Paging SQL 문, 기본 row_number는 키워드이며 모든 테이블에서는 이 필드 이름을 사용할 수 없습니다.

public static string CreatePagingSql(int _recordCount, int _pageSize, int _pageIndex, string _safeSql, string _orderField)

                                              ~   ‐ 페이지 수     _pageSize = _pageSize == 0 ? _recordCount : _pageSize;                                                                                       ‐ ~로 's 's 's 't ‐ ‐to _pageSize _pageSize == 0 ?                           If (_pageIndex < 1)

                                         ;   // 페이징을 위한 NUMBER 함수

           StringBuilder newSafeSql = new StringBuilder() SELECT ROW_NUMBER() OVER(ORDER BY {0}) as row_number; ,", _orderField);                  newSafeSql.Append(_safeSql.Substring(_safeSql.ToUpper().IndexOf("SELECT") + 6)); 최종 SQL 문에 연결됨
            StringBuilder sbSql = new StringBuilder( );        .Append("SELECT * FROM (");       sbSql.Append(newSafeSql.ToString());          sbSql.Append(") AS T" );
        sbSql.AppendFormat(" {0}과 {1} 사이의 row_number 위치" , ((_pageIndex - 1) * _pageSize) + 1, _pageIndex * _pageSize) }
/ / 총 레코드 수 가져오기 SQL 문
        public static string CreateCountingSql(string _safeSql)
                                                                             사용 사용 사용 사용 사용            ‐                 ‐   ‐ ‐‐‐ ‐ }

}



위 내용은 .NET에서 프로그램 페이징을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿