Object/DataSet Relational Mapping(对象/数据集…
2008-02-22 09:40:18来源:互联网 阅读 ()
using System.Web.UI.HtmlControls;
using IBatisNet.DataMapper;
using System.Reflection;
public partial class ODRM_test : PageBase
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataSet set11 = Mapper.Instance().QueryForDataSet("SelectXTM_UserByKey_Test",UIhashtable);
DataTable table1 = ConvertDataTable(set11, "");
//这里为自己定义的序列化类
cXTM_User[] objModel = new cXTM_User[table1.Rows.Count];
//DataTable转化为序列化类数组
for (int y = 0; y < table1.Rows.Count; y )
{
objModel[y] = new cXTM_User();
DataTableReturnOO(table1.Rows[y], objModel[y]);
}
//以DataSet模式绑定
ExDataGrid1.DataSource = table1;
//以序列化对象模式绑定
//ExDataGrid1.DataSource = objModel;
ExDataGrid1.DataBind();
}
}
protected void ExDataGrid1_ItemDataBound(object sender, DataGridItemEventArgs e)
{
/*
* 该部分应用范围
* 查询一条数据的修改,可以用objModel.UserName
* 而不必再使用DataTable[0].Rows[0]["UserName"]的模式
* 提高面向对象的程度,并减少业务流程部分编码
*/
if (e.Item.ItemIndex != -1)
{
cXTM_User objModel = new cXTM_User();
//如果为DataSet填充的DataGrid
if (e.Item.DataItem.GetType().FullName == "System.Data.DataRowView")
{
DataTableReturnOO((DataRow)((DataRowView)e.Item.DataItem).Row, objModel);
}
//否则认为为序列化对象填充
else
{
objModel = (cXTM_User)e.Item.DataItem;
}
}
}
/// <summary>
/// DataSet转化为序列化类函数,类定义参考cXTM_User
/// </summary>
private void DataTableReturnOO(DataRow row, cXTM_User objModel)
{
Hashtable hTable = new Hashtable();
hTable = ReturnHashtable(row);
Type entitytype = Type.GetType(objModel.GetType().AssemblyQualifiedName);
for (int j = 0; j < objModel.Propertylist.Length; j )
{
PropertyInfo propertyinfo = entitytype.GetProperty(objModel.Propertylist[j]);
propertyinfo.SetValue(objModel, hTable[objModel.Propertylist[j]], null);
}
}
/// <summary>
/// 转换为DataTable
/// </summary>
/// <param name="Source">数据源</param>
/// <param name="DataMember">数据表名称</param>
public static DataTable ConvertDataTable(object Source, string DataMember)
{
DataTable baseTable = new DataTable();
if (Source is DataTable)
{
baseTable = (DataTable)Source;
return baseTable;
}
if (Source is DataSet)
{
DataSet set1 = (DataSet)Source;
if ((set1.Tables.Count > 1) && ((DataMember == null) || (DataMember == "")))
{
throw new Exception("If there is more than one table in your dataset, you must define the DataMember property to specify which table to use.");
}
if (set1.Tables.Count < 1)
{
throw new Exception("There are no tables in the datasource.");
}
if ((DataMember != null) && (DataMember != ""))
{
baseTable = set1.Tables[DataMember];
return baseTable;
}
else
{
baseTable = set1.Tables[0];
return baseTable;
}
}
return baseTable;
}
/// <summary>
/// 返回DataTable为哈希表键值对
/// </summary>
/// <param name="SourceTable">数据行对象</param>
/// <returns></returns>
public static Hashtable ReturnHashtable(DataRow SourceRow)
{
Hashtable hTable = new Hashtable();
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash
