c# 简单的通用基础字典

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Text;
  5 using Alif.Alif_WSAPI;
  6 using System.Data;
  7 using System.Windows.Forms;
  8 
  9 namespace Alif.AlifForm.CommClass
 10 {
 11     /// <summary>
 12     /// 
 13     /// </summary>
 14     public class PagingCtrl
 15     {
 16         /// <summary>
 17         /// 页大小
 18         /// </summary>
 19         private int _PageSize = 50;
 20 
 21         /// <summary>
 22         /// 页索引
 23         /// </summary>
 24         private int _PageIndex = 1;
 25 
 26         /// <summary>
 27         /// 记录数
 28         /// </summary>
 29         private int _RecodeCount = 0;
 30 
 31         /// <summary>
 32         /// 页数
 33         /// </summary>
 34         private int _PageCount = 0;
 35 
 36         /// <summary>
 37         /// 回调函数获取要查询数据的XML数据参数
 38         /// </summary>
 39         /// <param name="PageIndex"></param>
 40         /// <param name="PageSize"></param>
 41         /// <returns></returns>
 42         public delegate string LoadXML(int PageIndex, int PageSize);
 43 
 44         /// <summary>
 45         /// 在读取数据后发生的事件,用于通知客户
 46         /// </summary>
 47         public delegate void afterDataLoadDelegate();
 48 
 49         /// <summary>
 50         /// 在读取数据前发生的事件,提示客户等待
 51         /// </summary>
 52         public delegate void beforeDataLoadDelegate();
 53 
 54         /// <summary>
 55         /// 在读取数据发生错误时发生,用于错误处理
 56         /// </summary>
 57         public delegate void errorDataLoadDelegate(string ErrMSG);
 58 
 59         /// <summary>
 60         /// 首页按钮
 61         /// </summary>
 62         System.Windows.Forms.Button _btFirst;
 63 
 64         /// <summary>
 65         /// 前页按钮
 66         /// </summary>
 67         System.Windows.Forms.Button _btPreview;
 68 
 69         /// <summary>
 70         /// 下一页按钮
 71         /// </summary>
 72         System.Windows.Forms.Button _btNext;
 73 
 74         /// <summary>
 75         /// 末页按钮
 76         /// </summary>
 77         System.Windows.Forms.Button _btLast;
 78 
 79         /// <summary>
 80         /// 刷新按钮
 81         /// </summary>
 82         System.Windows.Forms.Button _btreflesh;
 83 
 84         /// <summary>
 85         /// 记录数提示Label
 86         /// </summary>
 87         System.Windows.Forms.Label _msg;
 88 
 89         /// <summary>
 90         /// 每页记录数combo
 91         /// </summary>
 92         System.Windows.Forms.ComboBox _comPageSize;
 93 
 94         /// <summary>
 95         /// 当前页索引combo
 96         /// </summary>
 97         System.Windows.Forms.ComboBox _comToPageIndex;
 98 
 99         /// <summary>
100         /// 显示数据的datagridview
101         /// </summary>
102         C1.Win.C1FlexGrid.C1FlexGrid _dv;
103 
104         LoadXML _loadxml;
105         afterDataLoadDelegate _afterDataLoad;
106         beforeDataLoadDelegate _beferDataLoad;
107         errorDataLoadDelegate _errorDataLoad;
108 
109         public string _webseiviceComm = "";
110 
111         /// <summary>
112         /// 构造函数
113         /// </summary>
114         /// <param name="btFirst">首页</param>
115         /// <param name="btPreview">上一页</param>
116         /// <param name="btNext">下一页</param>
117         /// <param name="btLast">末页</param>
118         /// <param name="btreflesh">刷新</param>
119         /// <param name="msg">共x页,记录数:x</param>
120         /// <param name="PageSize">页大小</param>
121         /// <param name="PageIndex">页索引</param>
122         /// <param name="dv">显示数据的datagridview</param>
123         /// <param name="webseiviceComm">命令编号</param>
124         /// <param name="loadxmlCallBack">参数</param>
125         /// <param name="beferfireCallBack">加载之前处理的回调函数</param>
126         /// <param name="afterfireCallBack">加载之后处理的回调函数</param>
127         /// <param name="errorfireCallBack">错误处理的回调函数</param>
128         public PagingCtrl(System.Windows.Forms.Button btFirst,
129                                     System.Windows.Forms.Button btPreview,
130                                     System.Windows.Forms.Button btNext,
131                                     System.Windows.Forms.Button btLast,
132                                     System.Windows.Forms.Button btreflesh,
133                                     System.Windows.Forms.Label msg,
134                                     System.Windows.Forms.ComboBox PageSize,
135                                     System.Windows.Forms.ComboBox PageIndex,
136                                     C1.Win.C1FlexGrid.C1FlexGrid dv,
137                                     string webseiviceComm,
138                                     LoadXML loadxmlCallBack,
139                                     beforeDataLoadDelegate beferfireCallBack,
140                                     afterDataLoadDelegate afterfireCallBack,
141                                     errorDataLoadDelegate errorfireCallBack)
142         {
143             _btFirst = btFirst;
144             _btPreview = btPreview;
145             _btNext = btNext;
146             _btLast = btLast;
147             _msg = msg;
148             _dv = (C1.Win.C1FlexGrid.C1FlexGrid)dv;
149             _loadxml = loadxmlCallBack;
150             _webseiviceComm = webseiviceComm;
151             _comPageSize = PageSize;
152             _comToPageIndex = PageIndex;
153             _btreflesh = btreflesh;
154             _beferDataLoad = beferfireCallBack;
155             _afterDataLoad = afterfireCallBack;
156             _errorDataLoad = errorfireCallBack;
157 
158             if (_btFirst != null)
159             {
160                 _btFirst.Click += new System.EventHandler(this.btFirst_Click);
161             }
162             if (_btPreview != null)
163             {
164                 _btPreview.Click += new System.EventHandler(this.btUp_Click);
165             }
166             if (_btNext != null)
167             {
168                 _btNext.Click += new System.EventHandler(this.btNext_Click);
169             }
170             if (_btLast != null)
171             {
172                 _btLast.Click += new System.EventHandler(this.btLast_Click);
173             }
174 
175             if (_comPageSize != null)
176             {
177                 _comPageSize.SelectedIndexChanged += new System.EventHandler(comPageSize_SelectedIndexChanged);
178             }
179             if (_comToPageIndex != null)
180             {
181                 _comToPageIndex.SelectedIndexChanged += new EventHandler(comToPageIndex_SelectedIndexChanged);
182                 _comToPageIndex.Tag = "";
183             }
184             if (_btreflesh != null)
185             {
186                 _btreflesh.Click += new System.EventHandler(this.btReflesh_Click);
187             }
188         }
189 
190         /// <summary>
191         /// 调用webservice 方法获取数据
192         /// </summary>
193         /// <param name="webservicecomm"></param>
194         /// <param name="Xmlcommand"></param>
195         public void LoadData(string webservicecomm, string Xmlcommand)
196         {
197             if (_comToPageIndex != null)
198             {
199                 //防止程序重入
200                 if (_comToPageIndex.Tag == null || _comToPageIndex.Tag.ToString() == "1")
201                 {
202                     return;
203                 }
204                 _comToPageIndex.Tag = "1";
205             }
206 
207             //出发beforefire事件
208             if (_beferDataLoad != null)
209             {
210                 _beferDataLoad();
211             }
212 
213             System.Data.DataSet ds;
214 
215             try
216             {
217                 ds = LoadWebServiceData(webservicecomm, Xmlcommand);
218 
219                 if (!ds.Tables.Contains("table0"))
220                 {
221                     if(_dv.DataSource!=null)
222                     {
223                         ((DataTable)_dv.DataSource).Clear();
224                     }
225                 }
226                 else
227                 {
228 
229                     _dv.DataSource = ds.Tables["table0"];
230 
231 
232                 }
233 
234                 this._PageSize = Int32.Parse(ds.Tables["TabScript"].Rows[0]["PageSize"].ToString());
235                 this._PageIndex = Int32.Parse(ds.Tables["TabScript"].Rows[0]["PageIndex"].ToString());
236                 this._RecodeCount = Int32.Parse(ds.Tables["TabScript"].Rows[0]["Rows"].ToString());
237                 this._PageCount = this._RecodeCount / this._PageSize + 1;
238 
239                 if (_comToPageIndex != null)
240                 {
241                     _comToPageIndex.Items.Clear();
242                     for (int i = 1; i <= this._PageCount; ++i)
243                     {
244                         _comToPageIndex.Items.Add(i.ToString());
245 
246                     }
247                     _comToPageIndex.Text = this._PageIndex.ToString();
248                 }
249 
250                 if (_msg != null)
251                 {
252                     _msg.Text = "当前第" + this._PageIndex + "页," + "" + this._PageCount.ToString() + "页,记录数:" + this._RecodeCount.ToString();
253                 }
254 
255                 if (_btFirst != null)
256                 {
257                     _btFirst.Enabled = this._PageIndex <= 1 ? false : true;
258                 }
259                 if (_btPreview != null)
260                 {
261                     _btPreview.Enabled = _btFirst.Enabled;
262                 }
263                 if (_btLast != null)
264                 {
265                     _btLast.Enabled = this._PageIndex >= this._PageCount ? false : true;
266                 }
267 
268                 if (_btLast != null)
269                 {
270                     _btLast.Enabled = _btLast.Enabled;
271                 }
272             }
273             catch (Exception ex)
274             {
275                 //发生webservice错误
276                 if (_errorDataLoad != null)
277                 {
278                     _errorDataLoad("连接WebService服务器失败(001)!\n\r错误原因:" + ex.Message);
279                 }
280                 if (_comToPageIndex != null)
281                 {
282                     _comToPageIndex.Tag = "";
283                 }
284             }
285 
286             if (_afterDataLoad != null)
287             {
288                 _afterDataLoad();
289             }
290 
291             if (_comToPageIndex != null)
292             {
293                 _comToPageIndex.Tag = "";
294             }
295         }
296 
297         /// <summary>
298         /// 
299         /// </summary>
300         /// <param name="XmlComm"></param>
301         public void LoadData(string XmlComm)
302         {
303             LoadData(_webseiviceComm, XmlComm);
304 
305         }
306 
307         /// <summary>
308         /// 
309         /// </summary>
310         public void LoadData()
311         {
312             LoadData(_webseiviceComm, _loadxml(this._PageIndex, this._PageSize));
313         }
314 
315         /// <summary>
316         /// 加载web服务数据
317         /// </summary>
318         /// <param name="cmdID">命令编号</param>
319         /// <param name="para">参数</param>
320         /// <returns>数据集</returns>
321         private DataSet LoadWebServiceData(string cmdID, string para)
322         {
323             int tt;
324             string errmsg = "";
325             System.Data.DataSet ds = new DataSet();
326             try
327             {
328                 tt = WebService.GetInstance(CommonInfo.LoginInfo.userParameters).Execute("DataServices", cmdID, "1", para, out errmsg, out  ds);
329             }
330             catch (Exception ex)
331             {
332                 //发生webservice错误
333                 throw new Exception("连接WebService服务器失败(001)!\n\r错误原因:" + ex.Message);
334             }
335 
336             if (tt == 1)
337             {
338                 //获取数据成功
339                 return ds;
340             }
341             else
342             {
343                 //获取keystring错误
344                 throw new Exception("服务器返回失败信息(002)!\n\r错误原因:" + errmsg);
345             }
346         }
347 
348         /// <summary>
349         /// 刷新
350         /// </summary>
351         /// <param name="sender"></param>
352         /// <param name="e"></param>
353         private void btReflesh_Click(object sender, EventArgs e)
354         {
355             LoadData();
356         }
357 
358         /// <summary>
359         /// 下一页
360         /// </summary>
361         public void NextPage()
362         {
363             this._btNext.PerformClick();
364         }
365 
366         /// <summary>
367         /// 下一页
368         /// </summary>
369         /// <param name="sender"></param>
370         /// <param name="e"></param>
371         private void btNext_Click(object sender, EventArgs e)
372         {
373             _PageIndex++;
374             LoadData();
375         }
376 
377         /// <summary>
378         /// 上一页
379         /// </summary>
380         public void UpPage()
381         {
382             this._btPreview.PerformClick();
383         }
384 
385         /// <summary>
386         /// 上一页
387         /// </summary>
388         /// <param name="sender"></param>
389         /// <param name="e"></param>
390         private void btUp_Click(object sender, EventArgs e)
391         {
392             --_PageIndex;
393             LoadData();
394         }
395 
396         /// <summary>
397         /// 首页
398         /// </summary>
399         /// <param name="sender"></param>
400         /// <param name="e"></param>
401         private void btFirst_Click(object sender, EventArgs e)
402         {
403             _PageIndex = 1;
404             LoadData();
405         }
406 
407         /// <summary>
408         /// 首页
409         /// </summary>
410         public void FirstPage()
411         {
412             this._btFirst.PerformClick();
413         }
414 
415         /// <summary>
416         /// 最后一页
417         /// </summary>
418         /// <param name="sender"></param>
419         /// <param name="e"></param>
420         private void btLast_Click(object sender, EventArgs e)
421         {
422             _PageIndex = _PageCount;
423             LoadData();
424         }
425 
426         /// <summary>
427         /// 最后一页
428         /// </summary>
429         public void LastPage()
430         {
431             this._btLast.PerformClick();
432         }
433 
434         /// <summary>
435         /// combobox选择改变页号
436         /// </summary>
437         /// <param name="sender"></param>
438         /// <param name="e"></param>
439         private void comPageSize_SelectedIndexChanged(object sender, EventArgs e)
440         {
441             this._PageSize = Int32.Parse(_comPageSize.Text);
442             LoadData();
443         }
444 
445         /// <summary>
446         /// 翻到第几页
447         /// </summary>
448         /// <param name="sender"></param>
449         /// <param name="e"></param>
450         private void comToPageIndex_SelectedIndexChanged(object sender, EventArgs e)
451         {
452             this._PageIndex = Int32.Parse(_comToPageIndex.Text);
453             LoadData();
454         }
455     }
456 }

 

posted @ 2014-12-01 10:47  宇宙卡门  阅读(385)  评论(0编辑  收藏  举报