- 浏览: 2107107 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1878)
- [网站分类]ASP.NET (141)
- [网站分类]C# (80)
- [随笔分类]NET知识库 (80)
- [随笔分类]摘抄文字[非技术] (3)
- [随笔分类]养生保健 (4)
- [网站分类]读书区 (16)
- [随笔分类]赚钱 (7)
- [网站分类].NET新手区 (233)
- [随笔分类]网站 (75)
- [网站分类]企业信息化其他 (4)
- [网站分类]首页候选区 (34)
- [网站分类]转载区 (12)
- [网站分类]SQL Server (16)
- [网站分类]程序人生 (7)
- [网站分类]WinForm (2)
- [随笔分类]错误集 (12)
- [网站分类]JavaScript (3)
- [随笔分类]小说九鼎记 (69)
- [随笔分类]技术文章 (15)
- [网站分类]求职面试 (3)
- [网站分类]其他技术区 (6)
- [网站分类]非技术区 (10)
- [发布至博客园首页] (5)
- [网站分类]jQuery (6)
- [网站分类].NET精华区 (6)
- [网站分类]Html/Css (10)
- [随笔分类]加速及SEO (10)
- [网站分类]Google开发 (4)
- [随笔分类]旅游备注 (2)
- [网站分类]架构设计 (3)
- [网站分类]Linux (23)
- [随笔分类]重要注册 (3)
- [随笔分类]Linux+PHP (10)
- [网站分类]PHP (11)
- [网站分类]VS2010 (2)
- [网站分类]CLR (1)
- [网站分类]C++ (1)
- [网站分类]ASP.NET MVC (2)
- [网站分类]项目与团队管理 (1)
- [随笔分类]个人总结 (1)
- [随笔分类]问题集 (3)
- [网站分类]代码与软件发布 (1)
- [网站分类]Android开发 (1)
- [网站分类]MySQL (1)
- [网站分类]开源研究 (6)
- ddd (0)
- 好久没写blog了 (0)
- sqlserver (2)
最新评论
-
JamesLiuX:
博主,能组个队么,我是Freelancer新手。
Freelancer.com(原GAF – GetAFreelancer)帐户里的钱如何取出? -
yw10260609:
我认为在混淆前,最好把相关代码备份一下比较好,不然项目完成后, ...
DotFuscator 小记 -
日月葬花魂:
大哥 能 加我个QQ 交流一下嘛 ?51264722 我Q ...
web应用程序和Web网站区别 -
iaimg:
我想问下嵌入delphi写的程序总是出现窗体后面感觉有个主窗体 ...
C#自定义控件:WinForm将其它应用程序窗体嵌入自己内部 -
iaimg:
代码地址下不了啊!
C#自定义控件:WinForm将其它应用程序窗体嵌入自己内部
关于集合类的做法!
类工程:
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
发表评论
-
常用Web Service汇总(天气预报、时刻表等)
2010-07-15 23:10 912下面总结了一些常用的Web Service,是平时乱逛时收集的 ... -
常用Web Service汇总(天气预报、时刻表等)
2010-07-15 23:10 812下面总结了一些常用的Web Service,是平时乱逛时收集的 ... -
读blog小记
2009-11-06 10:13 7251.Google Books开始收录更多杂志,全部内容都可浏览 ... -
.NET 产品版权保护方案 (.NET源码加密保护)
2009-12-28 15:18 942说明:你希望自己用.net ... -
[转]CTO谈豆瓣网和校内网技术架构变迁
2009-12-29 11:05 949<!--done--> 豆瓣网CTO洪强 ... -
iframe框架页面实现自适应高度解决方案
2010-01-07 19:24 998经常会有父页面需要通过iframe嵌入另一个子页面,又要适时根 ... -
数据采集基类[转]
2010-01-12 18:01 802using System;using System.Data; ... -
.NET牛人应该知道些什么(转)?
2010-01-13 10:52 837何一个使用.NET的人 描述线程与进程的区别? 什么是Wi ... -
cuteEditor 配置
2010-01-13 23:54 15001、拷贝文件 (1)将CuteEditor、Bin文件夹下 ... -
纯CSS星级评价
2010-01-14 16:37 1140做一个星级评价的功能不是很难,但是要单纯用CSS写估计就 ... -
关于伪静态和真静态的一点心得
2010-01-16 23:30 11871.关于伪静态的用处 ... -
认证,授权2
2010-01-18 10:45 889以前对这部分一直糊涂着,总算理理清楚了包名:System.Se ... -
关于集合类的做法示例 实体类赋值 cnblogs
2010-01-22 10:31 925关于集合类的做法 ... -
无法在Web服务器上启动调试。与Web服务器通信时出现身份验证错误
2010-01-29 14:46 647使用Visual Studio 2005(Visu ... -
Godaddy自带免费10G空间开通完全教程
2010-01-29 23:56 1072在Godaddy注册的域名都会自带一个免费的10G空间,虽然有 ... -
无法在Web服务器上启动调试。与Web服务器通信时出现身份验证错误
2010-01-29 14:46 833使用Visual Studio 2005(Visu ... -
Godaddy自带免费10G空间开通完全教程
2010-01-29 23:56 691在Godaddy注册的域名都会自带一个免费的10G空间,虽然有 ... -
关于伪静态和真静态的一点心得
2010-01-16 23:30 7731.关于伪静态的用处 ... -
认证,授权2
2010-01-18 10:45 828以前对这部分一直糊涂着,总算理理清楚了包名:System.Se ... -
无法在Web服务器上启动调试。与Web服务器通信时出现身份验证错误
2010-01-29 14:46 1051使用Visual Studio 2005(Visu ...
相关推荐
关于-Cnblogs 关于cnblogs
Android中ContentProvider的示例,详细可以参见博客:http://www.cnblogs.com/plokmju/p/android_ContentProvider.html
spring cloud config 代码示例,详细见http://www.cnblogs.com/shamo89/p/8016908.html
工具同时提供帮助文档和大量的示例源码(如ECG.Demo等),用VS2005打开每个Demo文件解决方案文件(.sln)即可看到源代码,一些示例以对应数据库自带的示例库为例介绍的(如Oracle)。详见安装后文件和工具帮助. 最新版...
cnblogs Macbook Python
Android下使用SoundPool的示例,详细参见博客:http://www.cnblogs.com/plokmju/p/android_SoundPool.html
Spring Web Flow 2.0 购物车示例,资源来自http://www.cnblogs.com/xwdreamer/archive/2011/11/10/2296939.html.建议对照文章学习
.NET DevExpress的PivotGridControl使用示例,包含多维数据使用,详细说明可参照我的Blog:http://www.cnblogs.com/FreeDong/archive/2013/01/09/2853797.html
文章https://www.cnblogs.com/lifang-biz/p/11770299.html的源码包。 关于安卓串口开发,这篇文章写的比较明白: ...但是用这个方案代码会报错: ...示例源码中,修改了上述问题,并提供演示示例,可正常运行。
参考https://www.cnblogs.com/ymnets/p/3424943.html 做的示例程序,自己的理解地址https://blog.csdn.net/xunbaogang/article/details/82148711
这是 windows live writer 的插件,插入代码用处,喜欢可以拿去
CnBlogs_Com用到的CSS控制的代码折叠! 值得下载看看!资源免费,大家分享!! 更多免费资源 http://ynsky.download.csdn.net/
图片放大效果示例, 这里可以查看运行效果:http://www.cnblogs.com/sohighthesky/archive/2009/11/15/1603348.html
hexo-migrator-cnblogs Hexo 的 cnblogs 迁移器插件如何使用安装模块: npm install hexo-fs npm install hexo-migrator-cnblogs 转到您的 hexo 文件夹,然后执行以下命令: hexo migrate cnblogs < username> 由于...
这是一个工厂模式的简单代码,比较能说明问题。我的工厂模式理解:http://i.cnblogs.com/EditPosts.aspx?opt=1
Android下Aidl的使用,详细请参见博客:http://www.cnblogs.com/plokmju/p/android_Service_aidl_NormalType.html 和 http://www.cnblogs.com/plokmju/p/android_Service_aidl_CustomType.html
RedisSimpleTest.rar 为示例工程 源码 和相应的jar都在里面 参考地址:**一定要看** http://www.cnblogs.com/kkgreen/archive/2011/11/09/2243554.html -----服务器端的配置说明-------- redis-server.exe:...
转自:http://www.cnblogs.com/zhangziqiu/ 本人已经转化为PDF格式
随笔- 94 文章- 9 评论- 303 MyBatis使用示例原文链接:http://www.cnblogs.com/magialmoon/archive
资源是qt的示例代码samegame,代码没有修改,只是添加了一些注释,个人学习之用,上传希望可以帮助到初学者,讲解文章请到http://www.cnblogs.com/swarmbees/p/6560218.html