`
pcajax
  • 浏览: 2162503 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

关于集合类的做法示例 实体类赋值 cnblogs

阅读更多

 

 

关于集合类的做法!

类工程:

using System;

using System.Data;

namespace MyProduct.Employee

{

 /// <summary>

 /// Employee的实体类

 /// </summary>

 public class EmployeeEntity

 {

        private int mEmployeeID;

        private string mLastName;

        private string mFirstName;

        public int EmployeeID

        {

            get { return mEmployeeID; }

            set { mEmployeeID = value; }

        }

        public string LastName

        {

            get { return mLastName; }

            set { mLastName = value; }

        }

        public string FirstName

        {

            get { return mFirstName; }

            set { mFirstName = value; }

        }

  public EmployeeEntity()

  {

  

  }

        /// <summary>

        /// 构造函数,给实体类赋值

        /// </summary>

        /// <param name="pDR">DataRow</param>

        public EmployeeEntity(DataRow pDR)

        {

            Fill(pDR);

        }

        /// <summary>

        /// 给实体类赋值

        /// </summary>

        /// <param name="pDR">DataRow</param>

        public void Fill(DataRow pDR)

        {           

            foreach( System.Reflection.PropertyInfo pi in this.GetType().GetProperties())

            {

                if (pi.CanWrite)

                {

                    try

                    {

                        if (pDR[ pi.Name ] != null && !pDR.IsNull( pi.Name ) )

                        {     

                            pi.Setvalue(this, pDR[ pi.Name ], null);

                        }

                        else

                        {

                            pi.Setvalue(this, null, null);

                        }

                    }

                    catch

                    {

                        pi.Setvalue(this, null, null);

                    }

                }

            }

  

        }

 }

/// <summary>

    /// Employee的集合类

    /// </summary>

    public class EmployeeList : System.Collections.CollectionBase

    {

        public EmployeeList()

        {

  

        }

        /// <summary>

        /// 构造函数,给集合类赋值

        /// </summary>

        /// <param name="pDT">DataTable</param>

        public EmployeeList(DataTable pDT)

        {

            Fill(pDT);

        }

        /// <summary>

        /// 给集合类赋值

        /// </summary>

        /// <param name="pDT">DataTable</param>

        public void Fill(DataTable pDT)

        {

            foreach(DataRow pDR in pDT.Rows)

            {

                this.InnerList.Add( new EmployeeEntity( pDR ) );

            }

        }

        /// <summary>

        /// 索引

        /// </summary>

        public virtual EmployeeEntity this[int Index]

        {

            get

            {

                return (EmployeeEntity)this.List[Index];

            }

        }

        /// <summary>

        /// 添加

        /// </summary>

        /// <param name="pEmp">实体类</param>

        public virtual void Add(EmployeeEntity pEmp)

        {

            this.List.Add(pEmp);

        }

        /// <summary>

        /// 删除

        /// </summary>

        /// <param name="Index">index</param>

        public virtual void Remove(int Index)

        {

            this.List.RemoveAt(Index);

        }

    }

    /// <summary>

    /// Employee业务类

    /// </summary>

    public class EmployeeRule

    {

        /// <summary>

        /// 获取所有

        /// </summary>

        /// <returns></returns>

        public EmployeeList GetAllEmployees()

        {

            string sql;

            sql="select * from employees";

            DataTable pDT=ExeForDtl(sql);

            EmployeeList emplist=new EmployeeList();           

            emplist.Fill(pDT);

            return emplist;

        }

        /// <summary>

        /// 获取一个

        /// </summary>

        /// <param name="pEmployeeID"></param>

        /// <returns></returns>

public EmployeeEntity GetOneEmployee(int pEmployeeID)

        {

            string sql;

            sql="select * from employees where employeeid="+pEmployeeID;

          

            DataTable pDT=new DataTable();

            pDT=ExeForDtl(sql);

            if(pDT.Rows.Count>0)

            {

                return new EmployeeEntity(pDT.Rows[0]);

            }

            else

            {

                return null;

            }

        }

    }

}

Web工程:

这里的Web工程说明了怎样去调用我们写的集合类。

1。在DataGrid中使用集合类

直接绑定:

EmployeeRule empRule=new EmployeeRule();

DataGrid1.DataSource=empRule.GetAllEmployees();

DataGrid1.DataBind();

手工添加绑定:

EmployeeEntity emp=new EmployeeEntity();

emp.EmployeeID=10;

emp.FirstName="mike";

emp.LastName="daoson";

EmployeeList empList=new EmployeeList();

empList.Add(emp);

DataGrid1.DataSource=empList;

DataGrid1.DataBind();

2。给文本框赋值

EmployeeEntity emp=new EmployeeEntity();

emp=empRule.GetOneEmployee(1);

txtEmployeeID.Text=emp.EmployeeID.ToString();

txtFirstName.Text=emp.FirstName;

txtLastName.Text=emp.LastName;

下面讲一下此种方法的优缺点:

优点:

1。通过反射,循环给属性赋值,省去了给属性赋值的大量工作量

2。集合类可以直接绑定到DataGrid中

3。自己如果想构造一个虚拟的DataTable,可以通过集合类来做

4。这种方法可以用foreach做循环来检索出他的实体类

5。这里可以直接把datarow赋给实体类,也可以给实体类手工赋值

缺点:

1。数据库中的字段名必须要和实体类中的属性相一致

2。如果是多个表关联,那么集合类就不能绑定到DataGrid

 

分享到:
评论

相关推荐

    WindowsLiveWriter.CNBlogs.CodeHighlighter

    《Windows Live Writer CNBlogs CodeHighlighter 插件详解》 Windows Live Writer 是微软推出的一款离线博客编辑器,它允许用户在本地环境中撰写博客文章,然后发布到各种支持的博客平台。对于程序员或者技术博主而...

    About-Cnblogs:关于cnblogs

    关于Cnblogs是一个针对Cnblogs平台的介绍性资源,主要涵盖了Cnblogs的基本信息、功能特点以及如何在该平台上进行博客创作与分享的相关知识。Cnblogs是中国知名的程序员博客平台,为开发者提供了丰富的博客发布、管理...

    VB/C#.Net实体代码生成工具(EntitysCodeGenerate)【ECG】4.6

    工具同时提供帮助文档和大量的示例源码(如ECG.Demo等),用VS2005打开每个Demo文件解决方案文件(.sln)即可看到源代码,一些示例以对应数据库自带的示例库为例介绍的(如Oracle)。详见安装后文件和工具帮助. 最新版...

    C++调用WCF完整示例

    描述中的链接指向了博客文章“**http://www.cnblogs.com/springxie/p/7715922.html**”,该文章可能提供了具体的示例代码和详细步骤,包括如何处理身份验证、错误处理和传输安全等内容。由于没有实际访问链接,这里...

    cnblogs看到的富文本编辑器

    【标题】:“cnblogs看到的富文本编辑器” 在IT领域,富文本编辑器是一种用于创建和编辑含有格式化文本的应用程序,它允许用户在网页、博客、文档编辑等场景中进行文字处理,并能直接预览所见即所得的效果。在本...

    万一(cnblogs)不带评论.chm

    万一(cnblogs)不带评论.chm

    Spring Web Flow 2.0 购物车示例

    Spring Web Flow 2.0 购物车示例,资源来自http://www.cnblogs.com/xwdreamer/archive/2011/11/10/2296939.html.建议对照文章学习

    cnblogs:cnblogs文章

    标题 "cnblogs:cnblogs文章" 暗示了我们关注的是在知名中文博客平台Cnblogs上发布的文章,这通常涵盖了各种IT技术主题。在这个特定的案例中,描述提到了"Macbook"和"Python",这表明讨论可能集中在使用Macbook进行...

    .NET DevExpress的PivotGridControl使用示例

    .NET DevExpress的PivotGridControl使用示例,包含多维数据使用,详细说明可参照我的Blog:http://www.cnblogs.com/FreeDong/archive/2013/01/09/2853797.html

    安卓串口开发示例实例代码

    文章https://www.cnblogs.com/lifang-biz/p/11770299.html的源码包。 关于安卓串口开发,这篇文章写的比较明白: ...但是用这个方案代码会报错: ...示例源码中,修改了上述问题,并提供演示示例,可正常运行。

    spring cloud config 代码示例

    Spring Cloud Config 是一个用于管理应用配置的微服务框架,它允许开发者在开发、测试和生产环境中,以集中化、外部化的方式管理应用的...通过上述的代码示例和工作原理,你应该能更好地理解如何在实际项目中使用它。

    cnblogs发帖工具

    【标题】:“cnblogs发帖工具” 在IT领域,尤其是对于博客作者和程序员而言,`cnblogs` 是一个非常受欢迎的平台,用于分享技术文章、心得体验和代码实践。为了方便用户更高效地发布内容,有人开发了一款名为...

    CnBlogs_Com用到的CSS控制的代码折叠

    CnBlogs_Com用到的CSS控制的代码折叠! 值得下载看看!资源免费,大家分享!! 更多免费资源 http://ynsky.download.csdn.net/

    Asp.net Mvc简易插件系统示例

    这个示例中的博客文章(http://www.cnblogs.com/94pm/p/6819812.html)会提供更详细的实现细节和技术点,包括如何处理视图的加载、如何集成DI框架以及如何处理插件的生命周期事件等。通过阅读该文章,开发者可以深入...

    hexo-migrator-cnblogs:Hexo 的 cnblogs 迁移器插件

    hexo-migrator-cnblogs Hexo 的 cnblogs 迁移器插件如何使用安装模块: npm install hexo-fs npm install hexo-migrator-cnblogs 转到您的 hexo 文件夹,然后执行以下命令: hexo migrate cnblogs &lt; username&gt; 由于...

    mybatis-generator自动生成实体没有注释问题

    工具来源,http://www.cnblogs.com/NieXiaoHui/p/6100895.html#undefined,我只是一个搬运工。 显示效果如下: public class DiseaseDoctors { /** * 病种id */ private String id; /** * 医院id */ ...

    Android服务Aidl的示例demo

    Android下Aidl的使用,详细请参见博客:http://www.cnblogs.com/plokmju/p/android_Service_aidl_NormalType.html 和 http://www.cnblogs.com/plokmju/p/android_Service_aidl_CustomType.html

    redis 在java中的使用示例工程

    RedisSimpleTest.rar 为示例工程 源码 和相应的jar都在里面 参考地址:**一定要看** http://www.cnblogs.com/kkgreen/archive/2011/11/09/2243554.html -----服务器端的配置说明--------  redis-server.exe:...

    Kettle学习方式示例

    例如,提供的参考链接(https://www.cnblogs.com/yxysuanfa/p/6818736.html)就是一个实际操作的示例,可以帮助理解数据全量增量转换的过程。 9. **实践与调试**: - Kettle提供了图形化的界面,便于设计和调试...

    C# chart实时数据显示简单示例工程文件

    在这个示例工程中,可能有一个名为`ChartRealTimeShow.cs`的主要类,其中包含了窗体的定义和上述的定时器处理逻辑。`Series[0]`表示图表的第一个数据系列,`AddY()`方法用于在Y轴上添加一个新的数据点。 为了使图表...

Global site tag (gtag.js) - Google Analytics