您的位置:首页 > 其它

使用 Hashtable(哈希表)和 IEnumerator 接口 示例

2008-10-09 17:16 288 查看
今天在开发一个同步功能的时候,用到了Hashtable(哈希表)和 IEnumerator 接口,现在记录下来,以便以后学习!

using System;

using System.Collections;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Web;

using System.Web.SessionState;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.HtmlControls;

using System.Data.OracleClient;

namespace Station.StationDataBase.StStation

{

/// <summary>

/// SynchroStationData 的摘要说明。

/// </summary>

public class SynchroStationData : BaseSet.BasePape

{

protected System.Web.UI.WebControls.CheckBoxList chkStation;

protected System.Web.UI.WebControls.Label lblMessage;

protected System.Web.UI.WebControls.ImageButton btnSave;

ArrayList arrList = new ArrayList(); // 记录已经同步过的数据

private void Page_Load(object sender, System.EventArgs e)

{

// 在此处放置用户代码以初始化页面

if(!Page.IsPostBack)

{

GetSynchroStationInfo();

// 提示信息

lblMessage.Text = "颜色说明:灰色-变电站已经同步完毕;黑色-变电站需要同步!";

}

}

#region Web 窗体设计器生成的代码

override protected void OnInit(EventArgs e)

{

//

// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。

//

InitializeComponent();

base.OnInit(e);

}

/// <summary>

/// 设计器支持所需的方法 - 不要使用代码编辑器修改

/// 此方法的内容。

/// </summary>

private void InitializeComponent()

{

this.btnSave.Click += new System.Web.UI.ImageClickEventHandler(this.btnSave_Click);

this.Load += new System.EventHandler(this.Page_Load);

}

#endregion

/// <summary>

/// 得到将要同步的变电站信息

/// </summary>

private void GetSynchroStationInfo()

{

BenzClass.Organ objOrgan = new BenzClass.Organ();

BaseSet.SessionValule objGetSession = new Station.BaseSet.SessionValule();

Components.StStation objGetStation = new Components.StStation();

DataSet dsBenz = new DataSet();

DataSet dsStation = new DataSet();

DataView dv;

ListItem objItem;

int intCompanyID;

string strStationID;

string strStationName;

try

{

// 公司ID

intCompanyID = objGetSession.GetCompanyIDBySession();

// 得到Benz中数据

objOrgan.ConnString = DBAccess.DBUtil.GetBasicConnectionString();

dsBenz = objOrgan.OrganShowByOrganBureauID(intCompanyID);

dv = dsBenz.Tables[0].DefaultView;

dv.RowFilter = "f_OrganFlag in (16,64)"; // 16,64表示变电站和其他分类

// 得到变电站中数据

dsStation = objGetStation.StationShow(intCompanyID);

// 将Benz中数据放入哈希表中

Hashtable myList = new Hashtable();

for(int i = 0; i < dv.Count; i++)

{

myList.Add(dv[i]["f_OrganName"].ToString(),dv[i]["f_OrganID"].ToString());

}

// 将数据绑定到CheckBox上

for(IDictionaryEnumerator ie = myList.GetEnumerator(); ie.MoveNext();)

{

objItem = new ListItem();

objItem.Value = ie.Value.ToString();

objItem.Text = ie.Key.ToString();

for(int j = 0; j < dsStation.Tables[0].Rows.Count; j++)

{

strStationName = dsStation.Tables[0].Rows[j]["f_stationname"].ToString();

strStationID = dsStation.Tables[0].Rows[j]["f_stationid"].ToString();

if(strStationName.CompareTo(ie.Key.ToString()) == 0

&& strStationID.CompareTo(ie.Value.ToString()) == 0)

{

objItem.Text = "<font color=/"gray/">" + ie.Key.ToString() + "</font>";

// 记录已经同步过的数据

arrList.Add(ie.Value.ToString());

}

}

chkStation.Items.Add(objItem);

objItem = null;

}

}

catch(System.Exception err)

{

string strError = err.Message.ToString().Trim();

strError = PowerBase.GetOracleCustomErrorInfo(strError);

PowerBase.ShowMessage(Response,strError);

}

}

/// <summary>

/// 变电站数据同步

/// </summary>

private void SynchroData()

{

BaseSet.SessionValule objGetSession = new BaseSet.SessionValule();

Components.StStation objStation = new Components.StStation();

int intCompanyID;

int intStationID;

string strStationName;

bool blnFlag = false;

OracleConnection oraConn = new OracleConnection();

OracleTransaction oraTran = null;

try

{

oraConn.ConnectionString = DBAccess.DBUtil.GetConnectionString();

oraConn.Open();

oraTran = oraConn.BeginTransaction(IsolationLevel.ReadCommitted);

// 公司ID

intCompanyID = objGetSession.GetCompanyIDBySession();

for(int i = 0; i < chkStation.Items.Count; i++)

{

// 判断是否选中

if(chkStation.Items[i].Selected)

{

intStationID = System.Convert.ToInt32(chkStation.Items[i].Value.ToString());

strStationName = chkStation.Items[i].Text.ToString();

// 判断是否数据已经同步过

for(IEnumerator ie = arrList.GetEnumerator();ie.MoveNext();)

{

if(ie.Current.ToString().CompareTo(intStationID.ToString()) == 0)

{

blnFlag = true;

break;

}

}

// 数据同步

if(!blnFlag)

{

objStation.CompanyID = intCompanyID;

objStation.StationID = intStationID;

objStation.StationName = strStationName;

objStation.StationAdd(oraConn,oraTran);

}

}

}

//提交事务

oraTran.Commit();

PowerBase.ShowMessage(Response,"同步成功!");

}

catch(System.Exception err)

{

if (oraTran != null)

{

oraTran.Rollback();

oraTran = null;

}

string strError = err.Message.ToString().Trim();

strError = PowerBase.GetOracleCustomErrorInfo(strError);

PowerBase.ShowMessage(Response,strError);

}

}

/// <summary>

/// 保存事件

/// </summary>

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

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

private void btnSave_Click(object sender, System.Web.UI.ImageClickEventArgs e)

{

// 同步数据

SynchroData();

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: