CYQ.Data 轻量数据层之路 自定义MDataTable绑定续章(七)
本章起,将续章讲解整框架当初的设计思路:
本章既为续章,说明我以前写过,是的,以前我写过内部整个MDataTable的构造,不过,当初匆匆写完后,
最后一步的实现MDataTable绑定GridView/DataList/Repeater还差一点,这章续上!
这里列出我以前写过的关于构造自定义MDataTable系列文章:
备注:以下内容为早期所写,文字少,代码多,有不明之处,欢迎在文章后面留言!
1:CYQ.Data 轻量数据访问层(二) 构造数据单元(上)
2:CYQ.Data 轻量数据访问层(三) 构造数据单元(下)
3:CYQ.Data 轻量数据访问层(四) 构造数据单元列
4:CYQ.Data 轻量数据访问层(五) 构造数据行
5:CYQ.Data 轻量数据访问层(六) 构造数据表
6:CYQ.Data 轻量数据访问层(七) 自定义数据表实现绑定常用的数据控件(上)
7:CYQ.Data 轻量数据访问层(八) 自定义数据表实现绑定常用的数据控件(中)
8:CYQ.Data 轻量数据访问层(九) 自定义数据表实现绑定常用的数据控件(下)
在写完第八篇(九)之后,我们的测试结果里,并没有完成绑定功能,我们来看一下测试代码:
![](/assets/blank.gif)
table.Columns.Add("Url", SqlDbType.NVarChar);
table.Columns.Add("Name",SqlDbType.NVarChar);
MDataRow mdr = table.NewRow();
mdr[0].Value = "http://cyq1162.cnblogs.com/";
mdr[1].Value = "路过秋天";
table.Rows.Add(mdr);
GridView1.DataSource = table;
GridView1.DataBind();
![](/assets/blank.gif)
我们像普通的DataTable一样,添加了两列,然后对列赋值:
我们看一下测试的结果:
很明显,绑定的结果乱七杂八,不是我们想要的。
经过代码对比,发现,我们的MDataRow得实现IDataRecord接口才行,于是,让IDataRecord继承接口,并实现:
![](/assets/blank.gif)
{
/// ...省略N行已有代码...
#region IDataRecord 成员
int IDataRecord.FieldCount
{
get
{
return base.Count;
}
}
bool IDataRecord.GetBoolean(int i)
{
return (bool)this[i].Value;
}
byte IDataRecord.GetByte(int i)
{
return (byte)this[i].Value;
}
long IDataRecord.GetBytes(int i, long fieldOffset, byte[] buffer, int bufferoffset, int length)
{
throw new Exception("The method or operation is not implemented.");
}
char IDataRecord.GetChar(int i)
{
return (char)this[i].Value;
}
long IDataRecord.GetChars(int i, long fieldoffset, char[] buffer, int bufferoffset, int length)
{
return (long)this[i].Value;
}
IDataReader IDataRecord.GetData(int i)
{
throw new Exception("The method or operation is not implemented.");
}
string IDataRecord.GetDataTypeName(int i)
{
return (string)this[i].Value;
}
DateTime IDataRecord.GetDateTime(int i)
{
return (DateTime)this[i].Value;
}
decimal IDataRecord.GetDecimal(int i)
{
return (decimal)this[i].Value;
}
double IDataRecord.GetDouble(int i)
{
return (double)this[i].Value;
}
Type IDataRecord.GetFieldType(int i)
{
return this[i].Value.GetType();
}
float IDataRecord.GetFloat(int i)
{
return (float)this[i].Value;
}
Guid IDataRecord.GetGuid(int i)
{
return (Guid)this[i].Value;
}
short IDataRecord.GetInt16(int i)
{
return (short)this[i].Value;
}
int IDataRecord.GetInt32(int i)
{
return (int)this[i].Value;
}
long IDataRecord.GetInt64(int i)
{
return (long)this[i].Value;
}
string IDataRecord.GetName(int i)
{
return (string)this[i].Value;
}
int IDataRecord.GetOrdinal(string name)
{
return (int)this[name].Value;
}
string IDataRecord.GetString(int i)
{
return (string)this[i].Value;
}
object IDataRecord.GetValue(int i)
{
return this[i].Value;
}
int IDataRecord.GetValues(object[] values)
{
return 0;
}
bool IDataRecord.IsDBNull(int i)
{
return this[i].Value == DBNull.Value;
}
object IDataRecord.this[string name]
{
get
{
return this[name].Value;
}
}
object IDataRecord.this[int i]
{
get
{
return this[i].Value;
}
}
#endregion
}
![](/assets/blank.gif)
接着浏览了一下,不见啥效果。
于是又对比了一下代码,发现原来的MDataTable是采用继承方式List<MDataRow>,
于是,把它给弄到下面来了:
![](/assets/blank.gif)
{
private List<MDataRow> _Mdr;
public List<MDataRow> Rows
{
get
{
return _Mdr;
}
}
//...下面省略N行...
}
![](/assets/blank.gif)
接着小调整了一下,再次浏览,终于效果出来了:
至此,整个框架三部分中自定义MDataTable系列,就到此结束了。
备注:完整框架源码会在本系列结束之后另开章节发布,暂时望勿激动,学习思想才是重要的。
如果在学习过程中发现有什么问题,欢迎留言!
版权声明:本文原创发表于博客园,作者为路过秋天,原文链接:
http://www.cnblogs.com/cyq1162/archive/2010/08/24/1806300.html
CYQ.Data 轻量数据层之路 自定义MDataTable绑定续章(七)相关推荐
- CYQ.Data 轻量数据层之路 使用篇三曲 MAction 取值赋值(十四)
上一篇:CYQ.Data 轻量数据层之路 使用篇二曲 MAction 数据查询(十三) 内容概要 本篇继续上一篇内容,本节介绍所有取值与赋值的相关操作. 1:原生:像操作Row一样 2:扩展:对UI操 ...
- CYQ.Data 轻量数据层之路 使用篇五曲 MProc 存储过程与SQL(十六)
上一篇:CYQ.Data 轻量数据层之路 使用篇四曲 MAction 增删改(十五) 本篇内容概要 本篇继续上一篇内容,本节介绍MProc 类的相关操作. 1:MProc 存储过程操作 2:MProc ...
- CYQ.Data 轻量数据层之路 V2.0 震撼惊世 支持多数据库/内置Aop(二十五)
所有文章索引:CYQ.Data 轻量数据层之路 框架开源系列 索引 前言: 从V1.5发布到现在时隔20天了,终于发布2.0版本了,2.0系列版本由于引入多数据库支持,内部结构改动较大. 但是外面调用 ...
- CYQ.Data 轻量数据层之路 使用篇-辅助工具枚举生成器 视频 C (二十)
说明: 本次录制主要为使用篇:CYQ.Data 轻量数据层之路 优雅V1.4 辅助工具(十) 的附加视频教程. 本次视频介绍了使用工具创建存储过程/生成日志表/生成枚举文件等相关操作,同时以示例实 ...
- CYQ.Data 轻量数据层之路 使用篇-MAction 取值赋值 视频[带音乐] F (二十四)
CYQ.Data 轻量数据层之路 使用篇-MAction 取值赋值 视频[带音乐] F (二十四) 说明: 本次录制主要为使用篇:CYQ.Data 轻量数据层之路 使用篇三曲 MAction 取值赋值 ...
- CYQ.Data 轻量数据层之路
CYQ.Data 轻量数据层之路 即时通讯软件 其实本来是不想写使用帮助的,因为在以下的文章中,都有大量的示例存在: CYQ.Data 轻量数据层之路 应用示例一 留言版(四) CYQ.Data 轻量 ...
- CYQ.Data 轻量数据层之路 应用示例一 留言版(四)
继上篇:CYQ.Data 轻量数据层之路 继续狂热升级(三)之后,本篇要进入应用示例介绍使用了: 为了使一篇文章就能介绍完整个示例,我选用了简单的:登陆+注册+留言版本功能,来一步一步介绍如何使用的: ...
- CYQ.Data 轻量数据层之路 使用篇-MAction 数据查询 视频 D (二十一)
2019独角兽企业重金招聘Python工程师标准>>> 说明: 本次录制主要为使用篇:CYQ.Data 轻量数据层之路 使用篇二曲 MAction 数据查询(十三) 的附加视频教 ...
- CYQ.Data 轻量数据层之路 V3.0版本发布-Xml绝对杀手(三十二)
前言: 继正式发布V2.0到现在,已30来天了,一直静悄悄的都没发布什么版本 中间仅有插播了一下:CYQ.Data 轻量数据层之路 V2.5 抢先体验版本功能说明演示 (二十九) 只因最近花了很多时间 ...
最新文章
- 使用ajax方法实现form表单的提交
- 「SVN」Linux下svn命令使用的实践,个人记录~=傻瓜教程
- log4j中用变量配置日志输出文件位置
- sql datetime比较大小_SQL做题小技巧
- CF1379F1 Chess Strikes Back (easy version)(鸽笼原理、线段树)
- 【转】页(page),用户控件(userControl),窗口(window)区别
- 动图:程序员才懂的这些!
- Qt creator5.7 OpenCV249之图片灰度处理(含源码下载)
- 我的INI 配置文件读写动态库
- anaconda卸载tensorflow时,收集不到包的解决方法
- python os.system(cls)没反应_这真的是全宇宙最简单的Python安装方式了
- windows解压jar文件
- 如何下载矢量电子地图(OpenStreetMap)
- KYLO的数据库知识总结
- Mybatis 中事务提交方式
- java学习第114天,p699-706(05/12),完成QQ群发
- Java设计模式(五)代理设计模式—静态代理—JDK动态代理—Cglib动态代理
- vscode ubuntu 环境下ssh 远程连接 不稳定 重新打开
- 如何更好的设计网页配色
- spark运行出现py4j.protocol.Py4JError异常
热门文章
- python history函数_python的history_n 和history函数 获取的成交量和持仓量出现翻倍
- 拉普拉斯时域卷积定理_如何证明频域卷积定理
- mysql 联合索引 性能_mysql:联合索引及优化
- centos 使用java_如何在CentOS 8上安装Java
- django oracle 性能,4.利用Django在前端展示Oracle 状态趋势
- fpgrowth算法实战 mlib_【spark】41.Spark Mlib:FPGrowth算法
- linux nfs spec,创建 NFS Ubuntu Linux 服务器卷 - Azure Kubernetes Service | Microsoft Docs
- aix服务器屏幕显示被锁住了,Exceed登录AIX远程桌面的问题
- java如何寻找main函数对应的类
- python去年软件排行_2017年编程语言排行榜,Python位居榜首(C语言需求最大)