C#简单的通用基础字典实现方法
C#简单的通用基础字典实现方法
发布时间:2016-12-28 来源:查字典编辑
摘要:本文实例讲述了C#简单的通用基础字典实现方法。分享给大家供大家参考。具体实现方法如下:复制代码代码如下:usingSystem;usingS...

本文实例讲述了C#简单的通用基础字典实现方法。分享给大家供大家参考。具体实现方法如下:

复制代码 代码如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using Alif.Alif_WSAPI;

using System.Data;

using System.Windows.Forms;

namespace Alif.AlifForm.CommClass

{

/// <summary>

///

/// </summary>

public class PagingCtrl

{

/// <summary>

/// 页大小

/// </summary>

private int _PageSize = 50;

/// <summary>

/// 页索引

/// </summary>

private int _PageIndex = 1;

/// <summary>

/// 记录数

/// </summary>

private int _RecodeCount = 0;

/// <summary>

/// 页数

/// </summary>

private int _PageCount = 0;

/// <summary>

/// 回调函数获取要查询数据的XML数据参数

/// </summary>

/// <param name="PageIndex"></param>

/// <param name="PageSize"></param>

/// <returns></returns>

public delegate string LoadXML(int PageIndex, int PageSize);

/// <summary>

/// 在读取数据后发生的事件,用于通知客户

/// </summary>

public delegate void afterDataLoadDelegate();

/// <summary>

/// 在读取数据前发生的事件,提示客户等待

/// </summary>

public delegate void beforeDataLoadDelegate();

/// <summary>

/// 在读取数据发生错误时发生,用于错误处理

/// </summary>

public delegate void errorDataLoadDelegate(string ErrMSG);

/// <summary>

/// 首页按钮

/// </summary>

System.Windows.Forms.Button _btFirst;

/// <summary>

/// 前页按钮

/// </summary>

System.Windows.Forms.Button _btPreview;

/// <summary>

/// 下一页按钮

/// </summary>

System.Windows.Forms.Button _btNext;

/// <summary>

/// 末页按钮

/// </summary>

System.Windows.Forms.Button _btLast;

/// <summary>

/// 刷新按钮

/// </summary>

System.Windows.Forms.Button _btreflesh;

/// <summary>

/// 记录数提示Label

/// </summary>

System.Windows.Forms.Label _msg;

/// <summary>

/// 每页记录数combo

/// </summary>

System.Windows.Forms.ComboBox _comPageSize;

/// <summary>

/// 当前页索引combo

/// </summary>

System.Windows.Forms.ComboBox _comToPageIndex;

/// <summary>

/// 显示数据的datagridview

/// </summary>

C1.Win.C1FlexGrid.C1FlexGrid _dv;

LoadXML _loadxml;

afterDataLoadDelegate _afterDataLoad;

beforeDataLoadDelegate _beferDataLoad;

errorDataLoadDelegate _errorDataLoad;

public string _webseiviceComm = "";

/// <summary>

/// 构造函数

/// </summary>

/// <param name="btFirst">首页</param>

/// <param name="btPreview">上一页</param>

/// <param name="btNext">下一页</param>

/// <param name="btLast">末页</param>

/// <param name="btreflesh">刷新</param>

/// <param name="msg">共x页,记录数:x</param>

/// <param name="PageSize">页大小</param>

/// <param name="PageIndex">页索引</param>

/// <param name="dv">显示数据的datagridview</param>

/// <param name="webseiviceComm">命令编号</param>

/// <param name="loadxmlCallBack">参数</param>

/// <param name="beferfireCallBack">加载之前处理的回调函数</param>

/// <param name="afterfireCallBack">加载之后处理的回调函数</param>

/// <param name="errorfireCallBack">错误处理的回调函数</param>

public PagingCtrl(System.Windows.Forms.Button btFirst,

System.Windows.Forms.Button btPreview,

System.Windows.Forms.Button btNext,

System.Windows.Forms.Button btLast,

System.Windows.Forms.Button btreflesh,

System.Windows.Forms.Label msg,

System.Windows.Forms.ComboBox PageSize,

System.Windows.Forms.ComboBox PageIndex,

C1.Win.C1FlexGrid.C1FlexGrid dv,

string webseiviceComm,

LoadXML loadxmlCallBack,

beforeDataLoadDelegate beferfireCallBack,

afterDataLoadDelegate afterfireCallBack,

errorDataLoadDelegate errorfireCallBack)

{

_btFirst = btFirst;

_btPreview = btPreview;

_btNext = btNext;

_btLast = btLast;

_msg = msg;

_dv = (C1.Win.C1FlexGrid.C1FlexGrid)dv;

_loadxml = loadxmlCallBack;

_webseiviceComm = webseiviceComm;

_comPageSize = PageSize;

_comToPageIndex = PageIndex;

_btreflesh = btreflesh;

_beferDataLoad = beferfireCallBack;

_afterDataLoad = afterfireCallBack;

_errorDataLoad = errorfireCallBack;

if (_btFirst != null)

{

_btFirst.Click += new System.EventHandler(this.btFirst_Click);

}

if (_btPreview != null)

{

_btPreview.Click += new System.EventHandler(this.btUp_Click);

}

if (_btNext != null)

{

_btNext.Click += new System.EventHandler(this.btNext_Click);

}

if (_btLast != null)

{

_btLast.Click += new System.EventHandler(this.btLast_Click);

}

if (_comPageSize != null)

{

_comPageSize.SelectedIndexChanged += new System.EventHandler(comPageSize_SelectedIndexChanged);

}

if (_comToPageIndex != null)

{

_comToPageIndex.SelectedIndexChanged += new EventHandler(comToPageIndex_SelectedIndexChanged);

_comToPageIndex.Tag = "";

}

if (_btreflesh != null)

{

_btreflesh.Click += new System.EventHandler(this.btReflesh_Click);

}

}

/// <summary>

/// 调用webservice 方法获取数据

/// </summary>

/// <param name="webservicecomm"></param>

/// <param name="Xmlcommand"></param>

public void LoadData(string webservicecomm, string Xmlcommand)

{

if (_comToPageIndex != null)

{

//防止程序重入

if (_comToPageIndex.Tag == null || _comToPageIndex.Tag.ToString() == "1")

{

return;

}

_comToPageIndex.Tag = "1";

}

//出发beforefire事件

if (_beferDataLoad != null)

{

_beferDataLoad();

}

System.Data.DataSet ds;

try

{

ds = LoadWebServiceData(webservicecomm, Xmlcommand);

if (!ds.Tables.Contains("table0"))

{

if(_dv.DataSource!=null)

{

((DataTable)_dv.DataSource).Clear();

}

}

else

{

_dv.DataSource = ds.Tables["table0"];

}

this._PageSize = Int32.Parse(ds.Tables["TabScript"].Rows[0]["PageSize"].ToString());

this._PageIndex = Int32.Parse(ds.Tables["TabScript"].Rows[0]["PageIndex"].ToString());

this._RecodeCount = Int32.Parse(ds.Tables["TabScript"].Rows[0]["Rows"].ToString());

this._PageCount = this._RecodeCount / this._PageSize + 1;

if (_comToPageIndex != null)

{

_comToPageIndex.Items.Clear();

for (int i = 1; i <= this._PageCount; ++i)

{

_comToPageIndex.Items.Add(i.ToString());

}

_comToPageIndex.Text = this._PageIndex.ToString();

}

if (_msg != null)

{

_msg.Text = "当前第" + this._PageIndex + "页," + "共" + this._PageCount.ToString() + "页,记录数:" + this._RecodeCount.ToString();

}

if (_btFirst != null)

{

_btFirst.Enabled = this._PageIndex <= 1 ? false : true;

}

if (_btPreview != null)

{

_btPreview.Enabled = _btFirst.Enabled;

}

if (_btLast != null)

{

_btLast.Enabled = this._PageIndex >= this._PageCount ? false : true;

}

if (_btLast != null)

{

_btLast.Enabled = _btLast.Enabled;

}

}

catch (Exception ex)

{

//发生webservice错误

if (_errorDataLoad != null)

{

_errorDataLoad("连接WebService服务器失败(001)!nr错误原因:" + ex.Message);

}

if (_comToPageIndex != null)

{

_comToPageIndex.Tag = "";

}

}

if (_afterDataLoad != null)

{

_afterDataLoad();

}

if (_comToPageIndex != null)

{

_comToPageIndex.Tag = "";

}

}

/// <summary>

///

/// </summary>

/// <param name="XmlComm"></param>

public void LoadData(string XmlComm)

{

LoadData(_webseiviceComm, XmlComm);

}

/// <summary>

///

/// </summary>

public void LoadData()

{

LoadData(_webseiviceComm, _loadxml(this._PageIndex, this._PageSize));

}

/// <summary>

/// 加载web服务数据

/// </summary>

/// <param name="cmdID">命令编号</param>

/// <param name="para">参数</param>

/// <returns>数据集</returns>

private DataSet LoadWebServiceData(string cmdID, string para)

{

int tt;

string errmsg = "";

System.Data.DataSet ds = new DataSet();

try

{

tt = WebService.GetInstance(CommonInfo.LoginInfo.userParameters).Execute("DataServices", cmdID, "1", para, out errmsg, out ds);

}

catch (Exception ex)

{

//发生webservice错误

throw new Exception("连接WebService服务器失败(001)!nr错误原因:" + ex.Message);

}

if (tt == 1)

{

//获取数据成功

return ds;

}

else

{

//获取keystring错误

throw new Exception("服务器返回失败信息(002)!nr错误原因:" + errmsg);

}

}

/// <summary>

/// 刷新

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void btReflesh_Click(object sender, EventArgs e)

{

LoadData();

}

/// <summary>

/// 下一页

/// </summary>

public void NextPage()

{

this._btNext.PerformClick();

}

/// <summary>

/// 下一页

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void btNext_Click(object sender, EventArgs e)

{

_PageIndex++;

LoadData();

}

/// <summary>

/// 上一页

/// </summary>

public void UpPage()

{

this._btPreview.PerformClick();

}

/// <summary>

/// 上一页

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void btUp_Click(object sender, EventArgs e)

{

--_PageIndex;

LoadData();

}

/// <summary>

/// 首页

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void btFirst_Click(object sender, EventArgs e)

{

_PageIndex = 1;

LoadData();

}

/// <summary>

/// 首页

/// </summary>

public void FirstPage()

{

this._btFirst.PerformClick();

}

/// <summary>

/// 最后一页

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void btLast_Click(object sender, EventArgs e)

{

_PageIndex = _PageCount;

LoadData();

}

/// <summary>

/// 最后一页

/// </summary>

public void LastPage()

{

this._btLast.PerformClick();

}

/// <summary>

/// combobox选择改变页号

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void comPageSize_SelectedIndexChanged(object sender, EventArgs e)

{

this._PageSize = Int32.Parse(_comPageSize.Text);

LoadData();

}

/// <summary>

/// 翻到第几页

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void comToPageIndex_SelectedIndexChanged(object sender, EventArgs e)

{

this._PageIndex = Int32.Parse(_comToPageIndex.Text);

LoadData();

}

}

}

希望本文所述对大家的C#程序设计有所帮助。

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新C#教程学习
热门C#教程学习
编程开发子分类