【乾物】さらにデータページングコントロールをアップする━より柔軟で、より実用的である
8701 ワード
データ・ページング・コントロールの追加-より柔軟で実用的
データのページングに関する記事が多すぎて、それぞれのシナリオがありますが、ほとんどが似ています.ストレージ・プロシージャを使用するか、コードを直接使用してページングします.様々なシナリオのページングの効率も異なり、最も効率的な(実際のプロジェクトの状況に基づいて)を探す必要はありません.最も適切なものを探せばOKです.次にお話しするページングコントロールは非常に柔軟で、任意のタイプのデータベースをサポートし、ストレージ・プロシージャやコードのページングをサポートします.(自動的に判断します)、複数のテーブルのページングもサポートされていて、とても便利です.データのページングに関する文章は、私のブログでたくさん見つけることができます.以下、簡単なまとめをして、皆さんが調べるのに便利です.
1、オリジナル企業レベルコントロールライブラリのビッグデータ量ページングコントロール
2、さらにデータページングコントロールをアップする(ストレージプロセスを使わない)
3、 RDIFramework.NETにおけるマルチテーブル関連クエリーのページングインスタンス
次に共有するページングコントロールは、データベースに関連する操作を行わずにページングのみを行います.ページングコントロールにページングされたデータを直接提供すればよい.データ・ソースが何であるかは気にしないし、データのページング方法(ストレージ・プロシージャやコードなど)も気にしない.このページング・コントロールは、次の図に示すように、UcPagerExと名付けられています.
ページングコントロールを実現するコードは非常に簡単で、以下に直接すべてのソースコードを提供します.参考にして、ページングコントロール全体のソースコードは以下の通りです.
データのページングに関する記事が多すぎて、それぞれのシナリオがありますが、ほとんどが似ています.ストレージ・プロシージャを使用するか、コードを直接使用してページングします.様々なシナリオのページングの効率も異なり、最も効率的な(実際のプロジェクトの状況に基づいて)を探す必要はありません.最も適切なものを探せばOKです.次にお話しするページングコントロールは非常に柔軟で、任意のタイプのデータベースをサポートし、ストレージ・プロシージャやコードのページングをサポートします.(自動的に判断します)、複数のテーブルのページングもサポートされていて、とても便利です.データのページングに関する文章は、私のブログでたくさん見つけることができます.以下、簡単なまとめをして、皆さんが調べるのに便利です.
1、オリジナル企業レベルコントロールライブラリのビッグデータ量ページングコントロール
2、さらにデータページングコントロールをアップする(ストレージプロセスを使わない)
3、 RDIFramework.NETにおけるマルチテーブル関連クエリーのページングインスタンス
次に共有するページングコントロールは、データベースに関連する操作を行わずにページングのみを行います.ページングコントロールにページングされたデータを直接提供すればよい.データ・ソースが何であるかは気にしないし、データのページング方法(ストレージ・プロシージャやコードなど)も気にしない.このページング・コントロールは、次の図に示すように、UcPagerExと名付けられています.
ページングコントロールを実現するコードは非常に簡単で、以下に直接すべてのソースコードを提供します.参考にして、ページングコントロール全体のソースコードは以下の通りです.
using System;
using System.ComponentModel;
using System.Windows.Forms;
namespace RDIFramework.Controls
{
public delegate void PageChangedEventHandler(object sender, EventArgs e);
///
/// ,
///
public partial class UcPagerEx : UserControl
{
public event PageChangedEventHandler PageChanged;
private int _pageSize;
private int m_PageCount;
private int _recordCount;
private int _pageIndex;
public UcPagerEx()
{
InitializeComponent();
this._pageSize = 10;
this._recordCount = 0;
this._pageIndex = 1; //
}
///
///
///
///
///
public UcPagerEx(int recordCount, int pageSize)
{
InitializeComponent();
this._pageSize = pageSize;
this._recordCount = recordCount;
this._pageIndex = 1; //
this.InitPageInfo();
}
protected virtual void OnPageChanged(EventArgs e)
{
if (PageChanged != null)
{
InitPageInfo();
PageChanged(this, e);
}
}
[Description(" "), DefaultValue(20), Category(" ")]
public int PageSize
{
set
{
this._pageSize = value;
}
get
{
return this._pageSize;
}
}
[Description(" "), DefaultValue(0), Category(" ")]
public int PageCount
{
get
{
return this.m_PageCount;
}
}
[Description(" "), Category(" ")]
public int RecordCount
{
set
{
this._recordCount = value;
}
get
{
return this._recordCount;
}
}
[Description(" , 1"), DefaultValue(0), Category(" ")]
[Browsable(false)]
public int PageIndex
{
set
{
this._pageIndex = value;
}
get
{
return this._pageIndex;
}
}
///
///
///
///
///
public void InitPageInfo(int recordCount, int pageSize)
{
this._recordCount = recordCount;
this._pageSize = pageSize;
this.InitPageInfo();
}
///
///
///
///
public void InitPageInfo(int recordCount)
{
this._recordCount = recordCount;
this.InitPageInfo();
}
///
///
///
public void InitPageInfo()
{
if (this._pageSize this.m_PageCount)
{
this._pageIndex = this.m_PageCount;
}
if (this._pageIndex 1);
this.btnPrevious.Enabled = enable;
//
enable = (this.PageIndex > 1);
this.btnFirst.Enabled = enable;
//
enable = (this.PageIndex 1)
{
this.RefreshData(this._pageIndex - 1);
}
else
{
this.RefreshData(1);
}
}
private void btnNext_Click(object sender, System.EventArgs e)
{
if (this._pageIndex 0 ? this.m_PageCount : 1);
}
private void txtPageIndex_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
int num;
try
{
num = Convert.ToInt16(this.txtPageIndex.Text);
}
catch
{
num = 1;
}
if (num > this.m_PageCount)
num = this.m_PageCount;
if (num
, , ?
, 。 , :
, ? 。
Load Search() , :
private void Search()
{
var recordCount = 0;
this.DTProductInfo = GetData(out recordCount, ucPager.PageIndex, ucPager.PageSize, this.searchValue);
ucPager.RecordCount = recordCount;
ucPager.InitPageInfo();
//
this.GetList();
}
private DataTable GetData(out int recordCount, int pageIndex, int pageSize,string search)
{
return new ProductInfoManager(dbProvider).GetDTByPage(out recordCount, pageIndex, pageSize, search,ProductInfoTable.FieldCreateOn + " DESC ");
}
public override void GetList()
{
this.dgvProductInfo.AutoGenerateColumns = false;
if (this.DTProductInfo.Columns.Count > 0)
{
this.DTProductInfo.DefaultView.Sort = ProductInfoTable.FieldCreateOn;
}
this.dgvProductInfo.DataSource = this.DTProductInfo.DefaultView;
this.SetControlState();
}
にUcPagerExのPageChangedイベントを して、ユーザーのページングの を にする があります.コードは の りです.private void ucPager_PageChanged(object sender, EventArgs e)
{
var holdCursor = this.Cursor;
this.Cursor = Cursors.WaitCursor;
Search();
this.Cursor = holdCursor;
}
: のGetDTByPageメソッドは に できます.ストレージ・プロシージャを び すことも、コードを してページングすることもできます. ページされたデータを すだけでいいです.
の に すように、ページ けの を します.
: EricHu
Email: [email protected]
QQ :406590790
QQ :237326100
: 【CSDN】
【CNBLOGS】
: 、 、DBA。 、 , , , DotNet,DB(SqlServer、Oracle ) 。 Java、Delhpi Linux , 。 、 。 DB 、WinForm、WCF、WebService、 ASP.NET 、 、 。
, !
CNBLOGS , , , , , QQ , 。