一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - DataGridView使用BindingNavigator實現簡單分頁功能

DataGridView使用BindingNavigator實現簡單分頁功能

2020-06-21 16:58縹緲的塵埃 ASP.NET教程

這篇文章主要介紹了DataGridView使用BindingNavigator實現簡單分頁功能,本文主要是通過借用BindingNavigator空殼,文中通過實例代碼講解的非常詳細,需要的朋友可以參考下

上篇文章給大家介紹DataGridView使用自定義控件實現簡單分頁功能,本篇使用BindingNavigator來實現簡單分頁功能。其實也只是借用了一個BindingNavigator空殼,

實現原理和代碼與上一篇幾乎一樣,實現方法如下:

 1、新建一個WinForm程序,命名為BindingNavigatorMain,并拖入一個DataGridView控件及一個BindingNavigator控件。在BindingNavigator右下角彈窗中添加

一個Button(轉到),BindingNavigator的樣式如下:

DataGridView使用BindingNavigator實現簡單分頁功能

    2、BindingNavigatorMain的代碼如下:      

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
private int pageSize; //每頁顯示記錄數
  private int pageIndex; //頁序號
  private int totalCount; //總記錄數
  private int pageCount; //總頁數
  public BindingNavigatorMain()
  {
   InitializeComponent();
  }
  private void BindingNavigatorMain_Load(object sender, EventArgs e)
  {
   pageSize = 20;
   pageIndex = 0;
   SetPage();
  }
  //設置頁
  private void SetPage()
  {
   //總記錄數
   totalCount = 0;
   BindPage(pageSize, pageIndex + 1, out totalCount);
   //總頁數
   if (totalCount % pageSize == 0)
    pageCount = totalCount / pageSize;
   else
    pageCount = totalCount / pageSize + 1;
   //當前頁及總頁數
   txtCurrentPage.Text = (pageIndex + 1).ToString();
   lblTotalPage.Text = "共 " + pageCount.ToString() + " 頁";
   //BindingNavigator數據源不進行BindingSource賦值,但恢復控件可用性。
   bindingNavigatorMoveFirstItem.Enabled = true;
   bindingNavigatorMovePreviousItem.Enabled = true;
   txtCurrentPage.Enabled = true;
   lblTotalPage.Enabled = true;
   bindingNavigatorMoveNextItem.Enabled = true;
   bindingNavigatorMoveLastItem.Enabled = true;
  }
  /// <summary>
  /// 綁定頁
  /// </summary>
  /// <param name="pageSize">每頁顯示記錄數</param>
  /// <param name="pageIndex">頁序號</param>
  /// <param name="totalCount">總記錄數</param>
  private void BindPage(int pageSize, int pageIndex, out int totalCount)
  {
   SqlConnection conn = null;
   SqlCommand cmd = null;
   totalCount = 0;
   #region 連接數據庫測試
   try
   {
    //數據庫連接
    conn = new SqlConnection("server=.;database=DB_TEST;Uid=sa;pwd=********;");
    conn.Open();
    //SqlCommand
    cmd = new SqlCommand();
    cmd.Connection = conn;
    cmd.CommandText = "PageTest";
    cmd.CommandType = CommandType.StoredProcedure;
    SqlParameter[] param =
    {
     new SqlParameter("@PageSize",SqlDbType.Int),
     new SqlParameter("@PageIndex",SqlDbType.Int),
     new SqlParameter("@TotalCount",SqlDbType.Int)
    };
    param[0].Value = pageSize;
    param[1].Value = pageIndex;
    param[2].Direction = ParameterDirection.Output;
    cmd.Parameters.AddRange(param);
    //DataTable
    DataTable dt = new DataTable("MF_MO");
    dt.Columns.Add(new DataColumn("MO_NO", typeof(String)));
    dt.Columns.Add(new DataColumn("MRP_NO", typeof(String)));
    dt.Columns.Add(new DataColumn("QTY", typeof(Decimal)));
    dt.Columns.Add(new DataColumn("BIL_NO", typeof(String)));
    #region 方法一:SqlDataReader
    SqlDataReader dr = cmd.ExecuteReader();
    dt.Load(dr, LoadOption.PreserveChanges);
    dr.Close();
    totalCount = (int)param[2].Value;
    dataGridView1.DataSource = dt;
    #endregion
    #region #方法二:SqlDataAdapter
    //SqlDataAdapter da = new SqlDataAdapter();
    //da.SelectCommand = cmd;
    //dt.BeginLoadData();
    //da.Fill(dt);
    //dt.EndLoadData();
    //totalCount = (int)param[2].Value;
    //dataGridView1.DataSource = dt;
    #endregion
   }
   catch (Exception ex)
   {
    MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
   }
   finally
   {
    conn.Close();
    cmd.Dispose();
   }
   #endregion
  }
  /// <summary>
  /// 首頁
  /// </summary>
  /// <param name="sender"></param>
  /// <param name="e"></param>
  private void bindingNavigatorMoveFirstItem_Click(object sender, EventArgs e)
  {
   pageIndex = 0;
   SetPage();
  }
  /// <summary>
  /// 上一頁
  /// </summary>
  /// <param name="sender"></param>
  /// <param name="e"></param>
  private void bindingNavigatorMovePreviousItem_Click(object sender, EventArgs e)
  {
   pageIndex--;
   if (pageIndex < 0)
   {
    pageIndex = 0;
   }
   SetPage();
  }
  /// <summary>
  /// 下一頁
  /// </summary>
  /// <param name="sender"></param>
  /// <param name="e"></param>
  private void bindingNavigatorMoveNextItem_Click(object sender, EventArgs e)
  {
   pageIndex++;
   if (pageIndex > pageCount - 1)
   {
    pageIndex = pageCount - 1;
   }
   SetPage();
  }
  /// <summary>
  /// 末頁
  /// </summary>
  /// <param name="sender"></param>
  /// <param name="e"></param>
  private void bindingNavigatorMoveLastItem_Click(object sender, EventArgs e)
  {
   pageIndex = pageCount - 1;
   SetPage();
  }
  /// <summary>
  /// 只能按0-9、Delete、Enter、Backspace鍵
  /// </summary>
  /// <param name="sender"></param>
  /// <param name="e"></param>
  private void txtCurrentPage_KeyPress(object sender, KeyPressEventArgs e)
  {
   if ((e.KeyChar >= 48 && e.KeyChar <= 57) || e.KeyChar == 8 || e.KeyChar == 13 || e.KeyChar == 127)
   {
    e.Handled = false;
    if (e.KeyChar == 13)
    {
     Go();
    }
   }
   else
   {
    e.Handled = true;
   }
  }
  /// <summary>
  /// 指定頁
  /// </summary>
  /// <param name="sender"></param>
  /// <param name="e"></param>
  private void btnGo_Click(object sender, EventArgs e)
  {
   Go();
  }
  private void Go()
  {
   if (string.IsNullOrEmpty(txtCurrentPage.Text))
   {
    MessageBox.Show("指定頁不能為空。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
    txtCurrentPage.Focus();
    return;
   }
   if (int.Parse(txtCurrentPage.Text) > pageCount)
   {
    MessageBox.Show("指定頁已超過總頁數。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
    txtCurrentPage.Focus();
    return;
   }
   pageIndex = int.Parse(txtCurrentPage.Text) - 1;
   SetPage();
  }

    3、SQL Server創建存儲過程PageTest:

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
CREATE PROCEDURE [dbo].[PageTest]
 @PageSize INT,
 @PageIndex INT,
 @TotalCount INT OUTPUT
AS
BEGIN
 --總記錄數
 SELECT @TotalCount=COUNT(1) FROM MF_MO
 --記錄返回(使用動態SQL繞開參數嗅探問題,效率大幅度提升。)
 DECLARE @SQL NVARCHAR(1000)
 SET @SQL=
  'SELECT TOP ('+CONVERT(VARCHAR(32),@PageSize)+') MO_NO,MRP_NO,QTY,BIL_NO '+
  'FROM MF_MO A '+
  'WHERE NOT EXISTS (SELECT 1 FROM (SELECT TOP ('+CONVERT(VARCHAR(32),(@PageIndex-1)*@PageSize)+') MO_NO FROM MF_MO ORDER BY MO_NO) B WHERE A.MO_NO=B.MO_NO) '+
  'ORDER BY MO_NO'
 EXEC (@SQL)
END

    4、執行程序:

DataGridView使用BindingNavigator實現簡單分頁功能

 

    好了,分享就到此結束了,希望對有此需要的人有一些幫助。

   總結

以上所述是小編給大家介紹的DataGridView使用BindingNavigator實現簡單分頁功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

原文鏈接:https://www.cnblogs.com/atomy/archive/2019/11/16/11870595.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日韩毛片免费在线观看 | 人人艹在线视频 | 爱草视频| 嫩草影院地址一地址二 | 国产精品免费久久久久影院小说 | 99久久精品国产免费 | 欧美兽皇video | 亚洲spank男男实践网站 | 青青草在线观看 | 91久久综合九色综合欧美98 | 国产v日韩v欧美v精品专区 | 秋霞一级黄色片 | 久久香蕉国产免费天天 | 国产日韩欧美综合一区二区三区 | 精品久久久久久无码人妻国产馆 | fc2免费人成为视频 eeuss18影院www国产 | 亚洲精品中文字幕第一区 | 好男人免费高清在线观看2019 | 成人中文字幕在线观看 | 国产精品久久久久久久久免费hd | 毛片免费视频观看 | 强女明星系列小说 | 国产成人精品实拍在线 | 调教全程肉动画片在线观看 | 国产在线精品观看 | 亚洲成年人免费网站 | 美女扒开腿让男人桶爽动态图片 | 四虎影视永久在线 | 高清国产在线观看 | 日本亚洲欧洲高清有码在线播放 | 成人免费国产欧美日韩你懂的 | 亚洲h片 | 欧美成人精品福利网站 | 99精品影视| 海绵宝宝第二季全集免费观看 | 国产自一区 | 超级乱淫1| 嫩草影院地址一地址二 | 成品人视频w免费观看w | 国产免费又粗又猛又爽视频国产 | 好姑娘在线视频观看免费 |