打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
使用反映实现前端WEB窗口控件与后台数据库类对象的动态绑定

以前做开发时,在最后阶段会发生数据库字段部分的变化,如果在某表中增加了一些字段,那可真是一场恶梦,前几天在微软的MSDN上看到一篇关于前台窗口控件与事务逻辑动态绑定的例子(http://www.microsoft.com/china/msdn/library/webservices/asp.net/aspformbinding.mspx),使用了反射,我在使用时做了一下测试,发现效率还可以接受,但由于代码中未提供事务逻辑与数据库类字段的接口,多少有点遗憾,所以我把我加的这部分代码在这里解释一下,请各位大侠多多指教。(代码发布在http://mxjlb.ccwb.net/dbservice.rar)
using System;
using System.Data;
using System.Reflection;
using System.Configuration;
namespace DbService
{
 /// <summary>
 /// DataObjBinding 的摘要说明。
 /// </summary>
 public class DataObjBinding
 {
  public DataObjBinding()
  {
   //
   // TODO: 在此处添加构造函数逻辑
   //
  }

  public static string [] GetTableColum(string tablename)   //在WEB.config中写入表的字段信息。
  {

   string [] strColumn=ConfigurationSettings.AppSettings[tablename].ToLower().Split(',');
   return strColumn;
 }

  /// <summary>
  /// BindDataToClassProperty 的摘要说明。
  /// 数据库表对象到相应的类对象的属性捆定,并将数据记录赋值于相应对象
  /// obj 是前台类对象
  /// TableName  要查询的表名
  /// Condition  要查询的条件
  /// </summary>
  public static void  BindDataToClassProperty(object obj,string TableName, string Condition)
  {
   Type objType =obj.GetType();   //反射当前类的所有属性
   PropertyInfo[] objPropertiesArray = objType.GetProperties();
  
   string RowData="";//用于获得数据库的常量

   DataRow  daiRow=DbAccess.Select(TableName,GetTableColum(TableName),Condition).Tables[0].Rows[0];
   foreach(DataColumn c   in DbAccess.Select(TableName,GetTableColum(TableName),Condition).Tables[0].Columns)
   {
    RowData=daiRow[c.ToString()].ToString();
    foreach (PropertyInfo objProperty in objPropertiesArray)
    {
     // 检查匹配的名称和类型
     if (objProperty.Name.ToUpper() == c.ToString().ToUpper())
     {
      // 将控件的属性设置为业务对象属性值
      try
      {
       if (RowData=="True") RowData="1";  //如果是真假类型
       if (RowData=="False") RowData="0";
       objProperty.SetValue(obj, RowData , null);
       //return true;
      }
      catch
      {
       //return false;
      }
     }
    }
 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
转贴:Matlab GUIDE使用总结--Matlab GUI界面
C#综合揭秘——深入解析委托与事件
V8 JavaScript 引擎 – 嵌入者指南
Java反射之Field用法
Java程序员必备:序列化全方位解析
C#反射详解
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服