ホームページ  >  記事  >  バックエンド開発  >  .NET でプログラム ページングを実装する方法

.NET でプログラム ページングを実装する方法

零下一度
零下一度オリジナル
2017-06-24 09:59:481969ブラウズ

aspx

查询

 

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

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

CodeBehind

Namespace

public Partial class xxx : Web.UI.ManagePage
{

protected int totalCount //レコードの総数
protect; ed int ページ;/ /現在のページ
protected int pageSize;//ページごとのデータサイズ
protected stringKeywords = string.Empty;//クエリ条件

protected void Page_Load(object sender, 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 =Comburltxt( "xxx.aspx"、 "keywords = {0}&page = {1}"、 "__id__");

protected void lbtnSearch_Click(object sender, EventArgs e)
{
Response.Redirect(Utils.CombUrlTxt("xxx.aspx", "keywords={0}" txtKeywords.Text));
}

protected void txtPageNum_TextChanged(object sender, 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.aspx) "、"キーワード={0}"、これ.keywords));
}

}

Utils

命名空间

public class Utils
{

public静的文字列 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(stringexpression, 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(expression, out rv) ))
return rv;

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

public static float StrToFloat(stringexpression, float defValue)
{
if ((expression == null) | | (expression.Length > 10))
return defValue;

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

public static string CombUrlTxt(string _url, string _keys, params string[] _values)
{
StringBuilder urlParams = new StringBuilder();
try
{
string[] keyArr = _keys.Split(new char[] { ' &' });
for (int i = 0; i {
if (!string.IsNullOrEmpty(_values[i]) && _values[i] != 0")
{
_values[i] = UrlEncode(_values[i]);
urlParams.Append(string.Format(keyArr[i], _values) + "&");
}
}
if (!string.IsNullOrEmpty(urlParams. ToString()) && _url.IndexOf("?") == -1)
urlParams.Insert(0, "?");
}
catch
{
return _url;
}
return _url + DelLastChar(urlParams. ToString(), "&");
}

public static string UrlEncode(string str)
{
if (string.IsNullOrEmpty(str))
{
{
return "";
}
str = str.Replace ("'", "");
return HttpContext.Current.Server.UrlEncode(str);
}

//删除最后结尾の指定文字後の文字符


public static string DelLastChar(string str 、string strchar)
{
if (string.IsNullOrEmpty(str))
return "";
if (str.LastIndexOf(strchar) >= 0 && str.LastIndexOf(strchar) ) == str.Length - 1)
{
return str.Substring(0, str.LastIndexOf(strchar));
}
return str;
}

// 戻り分页页

🎜

public static string OutPageList(int pageSize, int pageIndex, int totalCount, string linkUrl, int centSize)
{
//计算页数
if (totalCount {
「」を返す;
}
int pageCount = totalCount / pageSize;
if (pageCount {
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 {
firstBtn = "«上一页 ";
}
if (pageIndex >= pageCount)
{
lastBtn = "下一页»";
}
if (pageIndex == 1)
{
firstStr = "1";
}
if (pageIndex == pageCount)
{
lastStr = "" + pageCount.ToString() + "";
}
int firstnum = pageindex-(Centsize /2); i&lt; = lastnum; / span&gt; "); + lastBtn);
return pageStr.ToString();

public static string GetCookie(string strName, string key)
{
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 U rlDecode( string str)
{
if (string.IsNullOrEmpty(str))
{
return "";
}
return http Context.Current.Server.UrlDecode(str);
}

public static void WriteCookie(string strName 、文字列キー、文字列 strValue、int 期限切れ)
{
HttpCookie cookie = HttpContext.Current.Request.Cookies[strName];
if (cookie == null)
{
{
cookie = new HttpCookie(strName);
}
Cookie [key] = UrlEncode(strValue);
cookie.Expires = DateTime.Now.AddMinutes(expires);
HttpContext.Current.Response.AppendCookie(cookie);
}

}

ビジネス

命名空间


public class Business
{
private readonly DAL.xxx xxxDal;


public Business()
{
xxxDal = new DAL.xxx();

}


公開リスト GetList(int pageSize, int pageIndex, string strWhere, string filedOrder, out int RecordCount,out 10進数 totalIncome)
{
return xxxDal.GetList(pageSize, pageIndex, strWhere, filedOrder, out RecordCount,out totalIncome);
}

}

DAL

命名空间


パブリック部分クラスxxx
{

🎜

公開リスト GetList(int pageSize, int pageIndex, string strWhere, string filedOrder, out int RecordCount,out 10進数 totalIncome)
{
totalIncome = 0;
StringBuilder strSql = new StringBuilder();
strSql.Append(@"select a.oid, ocreatetime,a.oaccname,a.oacctel,(uid=a.ouid の AppUser から ucardnum を選択) as 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) as couserrate,
ROW_NUMBER() over(ocreatetime desc で並べる) r from xxx a left join
(cooid、coprate、comoney、corealmoney、codowndrawfee、codrawfee、cou を選択) upperid,couserrate from xxx wherecostatus=1)b
on a.oid=b.cooid join xxx c on a.opid=c.pid
left join xxx d on b.couupperid=d.[uid] where a.ostatus=1 ");
if (strWhere.Trim( ) != "")
{
strSql.Append(strWhere);
}
using (var context = DataBaseConnection.GetSdkBaseConnection())
{
RecordCount = context.ExecuteScalar(PagingHelper.CreateCountingSql(strSql.ToString( )));
if (recordCount > 0)
{
StringBuilder strSql2 = new StringBuilder();
strSql2.Append(@"select SUM(corealmoney) from xxx a left join
(xxx から cooid、coprate、corealmoney、codowndrawfee、comoney、codrawfee、couupperid、couserrate を選択しますここで、costatus=1)b
a.oid=b.cooid で xxx c に参加 a.opid=c.pid
xxx d で b.couupperid=d に参加.[uid] ここで、a.ostatus=1 ");
if (strWhere.Trim() != "")
{
strSql2.Append(strWhere); ql.ToString(), filedOrder)).ToList();
}



}

PagingHelper

namespace

// ROW_NUMBER 高効率ページング(MSSQL2005 以降のみをサポート)

public static class PagingHelper

{


// パグリング SQL ステートメントを取得します。デフォルトの row_number は、すべてのテーブルでこのフィールド名を使用できません

。 Stration createpagingsql(int _recordcount、int _pagesize、int _pageIndex、string _safesql、ing ing _orlyfield) 's ‐ ‐ ‐ _pageSize to _pageSize == 0 ? ‐ _recordCount : _pageIndex ; // SQL 文字列を結合します。ページング用の ROW_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(); sbSql.Append("SELECT * FROM ("); sbSql.Append(newSafeSql.ToString()); sbSql.Append(") AST" );
sbSQL。 AppendFormat(" WHERE row_number between {0} and {1}", ((_pageIndex - 1) * _pageSize) + 1, _pageIndex * _pageSize) }
/ / レコードの総数を取得する SQL ステートメント
public static string CreateCountingSql( string _safeSql)
use using use using using using -

}



以上が.NET でプログラム ページングを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。