亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

不用存儲過程,直接用代碼來實現數據分頁

系統 1636 0

我介紹了 原創企業級控件庫之大數據據量分頁控件 ,這個控件主要是通過存儲過程進行數據分頁,得到了大家的支持,也給出了許多寶貴的建議,在這兒先感謝各位。同時也讓我更有信心進行以后的文章(企業級控件庫系列)。

分頁對于每個項目來說都有它存在的意義,想起在以前剛剛剛軟件開發時,由于剛剛畢業,理論知識雄厚,但實際工作經驗欠缺,記得幾年前做開發時,數據量很大,要用分頁,一開始真不知道如何是好,方法到知道,但速度與穩定性卻沒有經驗。在這兒,我只是起到一個 拋磚引玉 的作用,以便引起我們在實際工作中要多思考,對同一件事多想幾種解決方式,只有這樣才能不斷提高,同時要學會總結。

這篇我將給大家介紹:不用存儲過程,直接用代碼來實現數據分頁,歡迎大家拍磚,覺得不錯的可以推薦下。同時,你要用什么好的想法,也可以與我交流,謝謝。

本分頁控件原理

分頁的方法很多,有用存儲過程的,有不用存儲過程的,還有在C#中用DataGridView的虛擬模式的,目的只有一個,對大數據量進行處理,讓用戶體驗得到提高,軟件速度得到提升。本分頁控件主要是用了下面的SQL語句,我相信你能看懂的,存儲過程分頁也是用類似的SQL代碼:

?1?/*TableName???????????:表名????????????如:tbTestData
?2???SqlWhereStatement?? :Sql?Where表達式?如:where表達式為空
?3???PrimaryKey????????? :主鍵????????????如:UniqueID
?4???PageSize??????????? :分頁大小????????如:50
?5???pageIndex???????????:當前頁??????????如:8
?6???OrderField????????? :排序字段????????如:InsetDataTime?
?7?*/
?8?
?9?SELECT?TOP?50?*?FROM?tbTestData?
10?WHERE??UniqueID?NOT?IN
11?????(
12?????????SELECT?TOP?(50?*?8)?UniqueID??FROM?tbTestData??ORDER?BY?InsetDataTime?DESC
13?????)?
14?ORDER?BY?InsetDataTime??DESC

原理就這么簡單。

分頁控件代碼

?????? (一)、實例數據庫代碼

創建實例數據庫。

CREATE?TABLE?[tbTestData](
????[UniqueID]?[bigint]?NOT?NULL,
????[CompanyName]?[varchar](200)?NULL,
????[CompanyCode]?[varchar](50)?NULL,
????[Address]?[varchar](500)?NULL,
????[Owner]?[varchar](100)?NULL,
????[Memo]?[varchar](2000)?NULL,
????[InsetDataTime]?[datetime]?NULL,
?CONSTRAINT?[PK_tbTestData]?PRIMARY?KEY?CLUSTERED?
(
????[UniqueID]?ASC
)WITH?(PAD_INDEX??=?OFF,?STATISTICS_NORECOMPUTE??=?OFF,?IGNORE_DUP_KEY?=?OFF,?ALLOW_ROW_LOCKS??=?ON,?ALLOW_PAGE_LOCKS??=?ON)?ON?[PRIMARY]
)?ON?[PRIMARY]

GO

ALTER?TABLE?[dbo].[tbTestData]?ADD??CONSTRAINT?[DF_tbTestData_InsetDataTime]??DEFAULT?(getdate())?FOR?[InsetDataTime]
GO

--生成實例數據
declare?@intRowNumber?int;
select?@intRowNumber?=?1;
while?@intRowNumber?<?1000000
begin
????
????insert?into?tbTestData(UniqueID,CompanyName,CompanyCode,Address,Owner,Memo)
????values(@intRowNumber,'CompanyName'?+?cast(@intRowNumber?as?varchar(2000)),
???????????'CompanyCode'?+?cast(@intRowNumber?as?varchar(2000)),'Address'+?cast(@intRowNumber?as?varchar(2000)),
???????????'Owner'?+?cast(@intRowNumber?as?varchar(2000)),'Memo'?+?cast(@intRowNumber?as?varchar(2000)));????
????select?@intRowNumber?=?@intRowNumber?+?1
end

(二)、分頁控件代碼。

namespace?DotNet.Controls
{
????///?<summary>
????///?分頁控件(使用代碼實現,不用存儲過程)
????///?UcPageControlByCode
????///?修改紀錄
????///?????
????///?????2010-01-06?胡勇?修改轉到某頁由原來的KeyPress方法改為KeyDown,讓用戶按回車鍵確認轉頁,以防止連續綁定兩次。
????///?????2011-01-06?胡勇?增加對分頁控件的初始化代碼:public?DataTable?InitializePageControl()。
????///?????2011-01-05?胡勇?創建分頁控件
????///?????2011-04-02?胡勇?優化代碼、減少不必要的私有變量,去掉多余的代碼
????///?????
????///?<author>
????///?????<name>胡勇</name>
????///?????<QQ>80368704</QQ>
????///?????<Email>80368704@qq.com</Email>
????///?</author>
????///?</summary>
????[ToolboxItem(true)]
????[DefaultEvent("OnEventPageClicked")]
????[ToolboxBitmap(typeof(UcPageControlByCode),?"Images.UcPageControlByCodeIcon.png")]
????[Description("分頁控件(使用代碼實現,不用存儲過程)")]
????public?partial?class?UcPageControlByCode?:?UserControl
????{
????????#region?私有變量
????????int?recordCount?=?0;?//記錄數
????????int?pageCount???=?0;?//總頁數
????????int?pageIndex???=?0;?//當前頁
????????#endregion

????????#region?自定義事件
????????///?<summary>
????????///?單擊分頁按鈕(第一頁、上一頁、下一頁、最后頁、跳頁)時發生
????????///?</summary>
????????[Category("UcPageControlByCode"),?Description("單擊分頁按鈕時發生")]
????????public?event?EventHandler?OnEventPageClicked;
????????#endregion

????????#region?自定義屬性
????????private?int????_pageSize??????????=?50;?????????????//分頁大小
????????private?string?_sqlWhereStatement?=?string.Empty;???//MsSql?Where語句
????????private?string?_sqlConnString?????=?string.Empty;???//MsSql?數據庫連接字符串
????????private?string?_tableName?????????=?string.Empty;???//表名????????
????????private?string?_orderField????????=?string.Empty;???//數據表的排序字段
????????private?string?_primaryKey????????=?string.Empty;???//數據表的主鍵
????????private?string?_queryFieldList????=?"*";????????????//字段列表(默認為:*)
????????private?DataTable?_pageTable??????=?new?DataTable();
???????
????????///?<summary>
????????///?返回當前頁碼
????????///?</summary>
????????public?int?PageIndex
????????{
????????????get
????????????{
????????????????return?pageIndex?+?1;
????????????}
????????}

????????///?<summary>
????????///?得到或設置分頁大小(默認為:50)
????????///?</summary>
????????[Browsable(true),?Category("UcPageControlByCode"),?Description("得到或設置分頁大小(默認為:50)")]
????????public?int?PageSize
????????{
????????????get
????????????{
????????????????return?_pageSize;
????????????}
????????????set
????????????{
????????????????_pageSize?=?value;
????????????}
????????}
????????
????????///?<summary>
????????///?SQL語句的Where表達式
????????///?</summary>
????????[Browsable(false),?Category("UcPageControlByCode"),?Description("得到或設置SQL語句的Where表達式")]
????????public?string?SqlWhereStatement
????????{
????????????get
????????????{
????????????????return?_sqlWhereStatement;
????????????}
????????????set
????????????{
????????????????_sqlWhereStatement?=?value;
????????????}
????????}
????????
????????///?<summary>
????????///?得到或設置SqlServer的連接字符串
????????///?</summary>
????????[Browsable(false),?Category("UcPageControlByCode"),?Description("得到或設置SqlServer的連接字符串")]
????????public?string?SqlConnString
????????{
????????????get
????????????{
????????????????return?_sqlConnString;
????????????}
????????????set
????????????{
????????????????_sqlConnString?=?value;
????????????}
????????}

????????///?<summary>
????????///?得到用戶單擊分頁按鈕后返回的DataTable
????????///?</summary>
????????[Browsable(false),?Category("UcPageControlByCode"),?Description("得到用戶單擊分頁按鈕后返回的DataTable")]
????????public?DataTable?PageTable
????????{
????????????get
????????????{
????????????????return?_pageTable;
????????????}
????????}
????????
????????///?<summary>
????????///?設置或得到與分頁控件綁定的表名或視圖名
????????///?</summary>
????????[Browsable(true),?Category("UcPageControlByCode"),?Description("設置或得到與分頁控件綁定的表名或視圖名")]
????????public?string?TableName
????????{
????????????get
????????????{
????????????????return?_tableName;
????????????}
????????????set
????????????{
????????????????_tableName?=?value;
????????????}
????????}
????????
????????///?<summary>
????????///?設置或得到分頁控件排序字段
????????///?</summary>
????????[Browsable(true),?Category("UcPageControlByCode"),?Description("設置或得到分頁控件排序字段")]
????????public?string?OrderField
????????{
????????????get
????????????{
????????????????return?_orderField;
????????????}
????????????set
????????????{
????????????????_orderField?=?value;
????????????}
????????}
????????
????????///?<summary>
????????///?設置或得到分頁控件綁定數據表的主鍵
????????///?</summary>
????????[Browsable(true),?Category("UcPageControlByCode"),?Description("設置或得到分頁控件綁定數據表的主鍵")]
????????public?string?PrimaryKey
????????{
????????????get
????????????{
????????????????return?_primaryKey;
????????????}
????????????set
????????????{
????????????????_primaryKey?=?value;
????????????}
????????}
????????
????????///?<summary>
????????///?設置或得到分頁控件綁定的字段列表(默認為:*)
????????///?</summary>
????????[Browsable(true),?Category("UcPageControlByCode"),?Description("設置或得到分頁控件綁定的字段列表(默認為:*)")]
????????public?string?QueryFieldList
????????{
????????????get
????????????{
????????????????return?_queryFieldList;
????????????}
????????????set
????????????{
????????????????_queryFieldList?=?value;
????????????}
????????}
????????#endregion

????????#region?構造函數
????????///?<summary>
????????///?分頁控件(使用代碼實現,不用存儲過程)
????????///?</summary>
????????public?UcPageControlByCode()
????????{
????????????InitializeComponent();
????????}
????????#endregion

????????#region?分頁實現相關代碼

????????#region?void?SetUcPageControlPars(string?connStr,?string?whereStatement,?string?tbName,?string?orderField,?string?primaryKeyName,?string?fieldList):給UcPageControlByCode控件傳遞必需參數
????????///?<summary>
????????///?給UcPageControlByCode控件傳遞必需參數
????????///?</summary>
????????///?<param?name="connStr">連接字符串</param>
????????///?<param?name="whereStatement">MsSql?Where語句?</param>
????????///?<param?name="tbName">數據表名或視力名</param>
????????///?<param?name="orderField">排序字段</param>
????????///?<param?name="primaryKeyName">主鍵值</param>
????????///?<param?name="fieldList">字段列表(默認為:*)</param>
????????public?void?SetUcPageControlPars(string?connStr,?string?whereStatement,?string?tbName
???????????????????????????????????????,?string?orderField,?string?primaryKeyName,?string?fieldList)
????????{
????????????if?(string.IsNullOrEmpty(connStr.Trim()))
????????????{
????????????????DialogHelper.ShowErrorMsg("溫馨提示:\n無可用的數據庫連接!");
????????????????return;
????????????}
????????????else
????????????{
????????????????this.SqlConnString?=?connStr;
????????????}
????????????this.SqlWhereStatement?=?whereStatement;
????????????this.TableName?=?tbName;
????????????this.OrderField?=?orderField;
????????????this.PrimaryKey?=?primaryKeyName;
????????????if?(!string.IsNullOrEmpty(fieldList.Trim()))
????????????{
????????????????this.QueryFieldList?=?fieldList;
????????????}
????????}
????????#endregion

????????#region?DataTable?InitializePageControl():初始化UcPageControlByCode
????????///?<summary>
????????///?綁定UcPageControlByCode(并返回包含當前頁的DataTable)
????????///?</summary>
????????///?<returns>DataTable</returns>
????????public?DataTable?BindPageControl()
????????{
????????????recordCount???????=?GetTotalRecordCount();???????????????????????????//獲取總記錄數??
????????????pageCount?????????=?recordCount?/?PageSize?-?ModPage();??????????????//保存總頁數(減去ModPage()函數防止SQL語句執行時溢出查詢范圍,可以用存儲過程分頁算法來理解這句)?
????????????pageIndex?????????=?0;???????????????????????????????????????????????//保存一個為0的頁面索引值到pageIndex???
????????????lblPageCount.Text?=?(recordCount?/?PageSize?+?OverPage()).ToString();//顯示lblpageCount、lblrecCount的狀態???
????????????lblRecCount.Text??=?recordCount.ToString();
????????????????
????????????if?(recordCount?<=?PageSize)
????????????{
????????????????txtGoToPage.Enabled?=?false;
????????????}
????????????else
????????????{
????????????????txtGoToPage.Enabled?=?true;
????????????}

????????????return?TDataBind();??
????????}
????????#endregion
????????#region?余頁計算與總記錄數
????????///?<summary>
????????///?計算余頁
????????///?</summary>
????????///?<returns></returns>?????????
????????private?int?OverPage()
????????{
????????????int?returnValue?=?0;

????????????if?(recordCount?%?PageSize?!=?0)
????????????{
????????????????returnValue?=?1;
????????????}??????????

????????????return?returnValue;
????????}

????????///?<summary>
????????///?計算余頁,防止SQL語句執行時溢出查詢范圍???
????????///?</summary>
????????///?<returns></returns>
????????private?int?ModPage()
????????{
????????????int?returnValue?=?0;

????????????if?(recordCount?%?PageSize?==?0?&&?recordCount?!=?0)
????????????{
????????????????returnValue?=?1;
????????????}
????????????
????????????return?returnValue;
????????}

????????///?<summary>
????????///?計算總記錄數
????????///?</summary>
????????///?<returns>記錄總數</returns>?
????????private?int?GetTotalRecordCount()
????????{
????????????int?returnValue?????=?0;
????????????string?sqlStatement?=?"select?count(1)?as?rowsCount?from?"?+?TableName;?

????????????if?(SqlWhereStatement.Trim().Length?>?0)
????????????{
????????????????sqlStatement?=?"select?count(1)?as?rowsCount?from?"?+?TableName?+?"?where?"?+?SqlWhereStatement;
????????????}

????????????SqlDataReader?dr?=?null;
????????????try
????????????{
????????????????dr?=?DbHelperSQL.ExecuteReader(sqlStatement,?SqlConnString);
????????????????if?(dr.Read())
????????????????{
????????????????????returnValue?=?Int32.Parse(dr["rowsCount"].ToString());
????????????????}
????????????????
????????????}
????????????catch(Exception?ex)
????????????{
????????????????DialogHelper.ShowErrorMsg(ex.Message);
????????????}
????????????finally
????????????{
????????????????dr.Close();
????????????????dr.Dispose();
????????????}

????????????return?returnValue;
????????}
????????#endregion

????????#region?DataTable?TDataBind():數據綁定
????????private?DataTable?TDataBind()
????????{
????????????StringBuilder?sbSqlStatement?=?new?StringBuilder();
????????????bool?isForward??=?pageIndex?+?1?>?1;
????????????bool?isBackward?=?(pageIndex?!=?pageCount);
????????????btnFirstPage.Enabled?=?isForward;
????????????btnPrevPage.Enabled??=?isForward;????????????
????????????btnNextPage.Enabled??=?isBackward;
????????????btnLastPage.Enabled??=?isBackward;????????????

????????????if?(string.IsNullOrEmpty(SqlWhereStatement.Trim()))
????????????{
????????????????sbSqlStatement.Append("SELECT?TOP?"?+?PageSize?+?"??"?+?QueryFieldList?+?"?FROM?"?+?TableName?+?"?WHERE?"?+?PrimaryKey?+?"?NOT?IN(SELECT?TOP?");
????????????????sbSqlStatement.Append(PageSize?*?pageIndex?+?"??"?+?PrimaryKey?+?"?FROM?"?+?TableName);
????????????????sbSqlStatement.Append("?ORDER?BY?"?+?OrderField?+"?DESC)?ORDER?BY?"?+?OrderField?+?"?DESC");
????????????}
????????????else
????????????{
????????????????sbSqlStatement.Append("SELECT?TOP?"?+?PageSize?+?"??"?+?QueryFieldList?+?"?FROM?"?+?TableName?+?"?WHERE?"?+?SqlWhereStatement?+?"?AND?"?+?PrimaryKey?+?"?NOT?IN(SELECT?TOP?");
????????????????sbSqlStatement.Append(PageSize?*?pageIndex?+?"??"?+?PrimaryKey?+?"??FROM?"?+?TableName?+?"?WHERE?"?+?SqlWhereStatement?+?"??ORDER?BY?"?+?OrderField?+?"?DESC)?ORDER?BY?"?+?OrderField?+?"?DESC");
????????????}

????????????_pageTable??????????=?DbHelperSQL.Query(sbSqlStatement.ToString(),?SqlConnString).Tables[0];
????????????lblCurrentPage.Text?=?(pageIndex?+?1).ToString();
????????????txtGoToPage.Text????=?(pageIndex?+?1).ToString();
????????????return?_pageTable;
????????}
????????#endregion

????????#region?按鈕事件代碼
????????private?void?btnFirstPage_Click(object?sender,?EventArgs?e)
????????{
????????????pageIndex??=?0;????????????
????????????_pageTable?=?TDataBind();

????????????if?(OnEventPageClicked?!=?null)
????????????{
????????????????OnEventPageClicked(this,?null);
????????????}
????????}

????????private?void?btnPrevPage_Click(object?sender,?EventArgs?e)
????????{
????????????pageIndex--;?????????????
????????????_pageTable?=?TDataBind();

????????????if?(OnEventPageClicked?!=?null)
????????????{
????????????????OnEventPageClicked(this,?null);
????????????}
????????}

????????private?void?btnNextPage_Click(object?sender,?EventArgs?e)
????????{
????????????pageIndex++;
????????????_pageTable?=?TDataBind();

????????????if?(OnEventPageClicked?!=?null)
????????????{
????????????????OnEventPageClicked(this,?null);
????????????}
????????}

????????private?void?btnLastPage_Click(object?sender,?EventArgs?e)
????????{
????????????pageIndex??=?pageCount;???????
????????????_pageTable?=?TDataBind();

????????????if?(OnEventPageClicked?!=?null)
????????????{
????????????????OnEventPageClicked(this,?null);
????????????}
????????}

????????private?void?txtGoToPage_KeyDown(object?sender,?KeyEventArgs?e)
????????{
????????????if?(e.KeyCode?==?Keys.Enter)
????????????{
????????????????try
????????????????{??????????????????????????????????
????????????????????if?(Int32.Parse(txtGoToPage.Text)?>?(recordCount?/?PageSize?+?OverPage())?||?Int32.Parse(txtGoToPage.Text)?<=?0)
????????????????????{
????????????????????????DialogHelper.ShowWarningMsg("頁碼范圍越界!");
????????????????????????txtGoToPage.Clear();
????????????????????????txtGoToPage.Focus();
????????????????????}
????????????????????else
????????????????????{
????????????????????????pageIndex??=?Int32.Parse(txtGoToPage.Text.ToString())?-?1;
????????????????????????_pageTable?=?TDataBind();

????????????????????????if?(OnEventPageClicked?!=?null)
????????????????????????{
????????????????????????????OnEventPageClicked(this,?null);
????????????????????????}
????????????????????}
????????????????}
????????????????catch?(Exception?ex)?//捕獲由用戶輸入不正確數據類型時造成的異常????
????????????????{
????????????????????DialogHelper.ShowWarningMsg(ex.Message);
????????????????????txtGoToPage.Clear();
????????????????????txtGoToPage.Focus();
????????????????}
????????????}
????????}
????????#endregion

????????#endregion
????}
}

分頁控件使用實例

???? 客戶端使用代碼如下:

?????

View Code
?1?using?System;
?2?using?System.Collections.Generic;
?3?using?System.ComponentModel;
?4?using?System.Data;
?5?using?System.Drawing;
?6?using?System.Configuration;
?7?using?DotNet.Controls;
?8?using?System.Text;
?9?using?System.Windows.Forms;
10?using?DotNet.Common;
11?using?DotNet.WinForm.Utilities;
12?
13?namespace?DotNet.WinForm.Example
14?{
15?????public?partial?class?FrmUcPageControlByCodeTest?:?Form
16?????{
17?????????public?FrmUcPageControlByCodeTest()
18?????????{
19?????????????InitializeComponent();
20?????????}
21?
22?????????private?void?FrmUcPageControlByCodeTest_Shown(object?sender,?EventArgs?e)
23?????????{
24?????????????//初始化方法一
25?????????????//ucPageControlByCode.SqlConnString?=?ConfigurationSettings.AppSettings["DbConnection"];
26?????????????//ucPageControlByCode.SqlWhereStatement?=?"1=1";
27?????????????//ucPageControlByCode.TableName?=?"tbTestData";
28?????????????//ucPageControlByCode.OrderField?=?"UniqueID";
29?????????????//ucPageControlByCode.PrimaryKey?=?"UniqueID";
30?????????????//ucPageControlByCode.QueryFieldList?=?"*";
31?
32?????????????//初始化方法二
33?????????????ucPageControlByCode.SetUcPageControlPars(ConfigurationSettings.AppSettings["DbConnection"],?"1=1",?"tbTestData",
34?????????????????"UniqueID",?"UniqueID",?"*");
35?????????????DataTable?dtTest?=?new?DataTable();
36?????????????dtTest?=?ucPageControlByCode.BindPageControl();
37?????????????ucDataGridView.DataSource?=?dtTest;
38?
39?????????????//綁定查詢項
40?????????????Dictionary<string,?string>?dicListQueryItems?=?new?Dictionary<string,?string>();
41?????????????foreach?(DataColumn?dc?in?dtTest.Columns)
42?????????????{
43?????????????????dicListQueryItems.Add(dc.ColumnName,?dc.DataType.ToString());
44?????????????}
45?????????????ucCombinQuery1.SetQueryItems(dicListQueryItems);
46?????????}
47?
48?????????private?void?ucDataGridView_DataBindingComplete(object?sender,?DataGridViewBindingCompleteEventArgs?e)
49?????????{
50?????????????gbMain.Text?=?"當前共:"?+?ucDataGridView.Rows.Count.ToString()?+?"條數據。";
51?????????}
52?
53?????????private?void?ucPageControlByCode_OnEventPageClicked(object?sender,?EventArgs?e)
54?????????{
55?????????????ucDataGridView.DataSource?=?null;
56?????????????ucDataGridView.DataSource?=?ucPageControlByCode.PageTable;
57?????????}
58?
59?????????private?void?ucCombinQuery1_OnQueryClicked(object?sender,?EventArgs?e)
60?????????{
61?????????????try
62?????????????{
63?????????????????Splasher.Show(typeof(FrmSplash));
64?????????????????Splasher.Status?=?"正在查找數據,請稍等...";
65?????????????????System.Threading.Thread.Sleep(450);
66?????????????????ucDataGridView.DataSource?=?null;
67?????????????????ucPageControlByCode.SqlWhereStatement?=?ucCombinQuery1.QueryExpression;?//指定查詢表達式
68?????????????????ucDataGridView.DataSource?=?ucPageControlByCode.BindPageControl();?//綁定DataGridView
69?????????????}
70?????????????catch?(Exception?ex)
71?????????????{
72?????????????????ucPageControlByCode.SqlWhereStatement?=?"1<>1";
73?????????????????ucDataGridView.DataSource?=?ucPageControlByCode.BindPageControl();?//綁定DataGridView
74?????????????????Splasher.Status?=?ex.Message;
75?????????????????System.Threading.Thread.Sleep(1000);
76?????????????}
77?????????????finally
78?????????????{
79?????????????????System.Threading.Thread.Sleep(100);
80?????????????????Splasher.Status?=?"查找完畢...";???????????????
81?????????????????Splasher.Close();????????????????
82?????????????}
83?????????}
84?????}
85?}

???? 最后的效果如下:

本篇主要內容如下:

  • 概述
  • 本分頁控件原理。
  • 分頁控件代碼。
  • 分頁控件使用實例。

------------------------------------------------

cnBlobs: http://www.cnblogs.com/huyong/
CSDN http://blog.csdn.net/chinahuyong ?

?

不用存儲過程,直接用代碼來實現數據分頁


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 天天躁狠狠躁 | 国产午夜精品福利视频 | 婷婷亚洲综合一区二区 | 久久国产精品偷 | 亚洲视频在线免费 | 亚洲欧美日韩综合精品网 | 好吊妞精品视频 | 91尤物视频 | 久久国产乱子伦精品免费一 | 久久精品国1国二国三 | 久久久久久九 | 国产精品中文字幕在线 | 亚洲欧美日韩综合一区久久 | 久青草视频免费观看青 | 深夜福利视频网址 | 四虎家庭影院 | 亚洲一区视频在线播放 | 亚洲人成网i8禁止 | 国产护士一级毛片高清 | 色婷婷综合久久久中文字幕 | 91久久精品都在这里 | 四虎麻豆 | 日本黄色不卡视频 | 欧美日韩久久中文字幕 | 天天色天天操天天 | 久久亚洲伊人 | 亚洲欧美在线综合一区二区三区 | 久久免费播放视频 | 超91视频 | 在线亚洲免费 | 日韩欧美国产一区二区三区 | 欧美一级特黄真人毛片 | 四虎国产成人永久精品免费 | 日本一级毛片aaaaa | 免费一级a毛片在线 | 人人看操 | 欧美a级毛片 | 亚洲综合成人网在线观看 | 奇米色第四色 | 国产成人亚洲精品91专区高清 | 欧美日韩在线免费观看 |