CYQ.Data 轻量数据层之路 自定义MDataTable绑定续章(七)
2012-03-09 00:00
489 查看
本章起,将续章讲解整框架当初的设计思路:
本章既为续章,说明我以前写过,是的,以前我写过内部整个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 轻量数据访问层(九) 自定义数据表实现绑定常用的数据控件(下)
在写完第八篇(九)之后,我们的测试结果里,并没有完成绑定功能,我们来看一下测试代码:
MDataTable table
=
new
MDataTable(
"
myTableName
"
);
table.Columns.Add(
"Url
"
, SqlDbType.NVarChar);
table.Columns.Add(
"Name
"
,SqlDbType.NVarChar);
MDataRow mdr
=
table.NewRow();
mdr[
].Value
=
"
http://cyq1162.cnblogs.com/
"
;
mdr[
1
].Value
=
"
路过秋天
"
;
table.Rows.Add(mdr);
GridView1.DataSource
=
table;
GridView1.DataBind();
我们像普通的DataTable一样,添加了两列,然后对列赋值:
我们看一下测试的结果:
很明显,绑定的结果乱七杂八,不是我们想要的。
经过代码对比,发现,我们的MDataRow得实现IDataRecord接口才行,于是,让IDataRecord继承接口,并实现:
public
class
MDataRow : List
<
MDataCell
>
, IDataRecord
{
///
...省略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
;
}
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
}
接着浏览了一下,不见啥效果。
于是又对比了一下代码,发现原来的MDataTable是采用继承方式List<MDataRow>,
于是,把它给弄到下面来了:
public
class
MDataTable : IDataReader, IEnumerable
{
private
List
<
MDataRow
>
_Mdr;
public
List
<
MDataRow
>
Rows
{
get
{
return
_Mdr;
}
}
//
...下面省略N行...
}
接着小调整了一下,再次浏览,终于效果出来了:
至此,整个框架三部分中自定义MDataTable系列,就到此结束了。
备注:完整框架源码会在本系列结束之后另开章节发布,暂时望勿激动,学习思想才是重要的。
如果在学习过程中发现有什么问题,欢迎留言!
原文链接:
http://www.cnblogs.com/cyq1162/archive/2010/08/24/1806300.html
本章既为续章,说明我以前写过,是的,以前我写过内部整个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 轻量数据访问层(九) 自定义数据表实现绑定常用的数据控件(下)
在写完第八篇(九)之后,我们的测试结果里,并没有完成绑定功能,我们来看一下测试代码:
MDataTable table
=
new
MDataTable(
"
myTableName
"
);
table.Columns.Add(
"Url
"
, SqlDbType.NVarChar);
table.Columns.Add(
"Name
"
,SqlDbType.NVarChar);
MDataRow mdr
=
table.NewRow();
mdr[
].Value
=
"
http://cyq1162.cnblogs.com/
"
;
mdr[
1
].Value
=
"
路过秋天
"
;
table.Rows.Add(mdr);
GridView1.DataSource
=
table;
GridView1.DataBind();
我们像普通的DataTable一样,添加了两列,然后对列赋值:
我们看一下测试的结果:
很明显,绑定的结果乱七杂八,不是我们想要的。
经过代码对比,发现,我们的MDataRow得实现IDataRecord接口才行,于是,让IDataRecord继承接口,并实现:
public
class
MDataRow : List
<
MDataCell
>
, IDataRecord
{
///
...省略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
;
}
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
}
接着浏览了一下,不见啥效果。
于是又对比了一下代码,发现原来的MDataTable是采用继承方式List<MDataRow>,
于是,把它给弄到下面来了:
public
class
MDataTable : IDataReader, IEnumerable
{
private
List
<
MDataRow
>
_Mdr;
public
List
<
MDataRow
>
Rows
{
get
{
return
_Mdr;
}
}
//
...下面省略N行...
}
接着小调整了一下,再次浏览,终于效果出来了:
至此,整个框架三部分中自定义MDataTable系列,就到此结束了。
备注:完整框架源码会在本系列结束之后另开章节发布,暂时望勿激动,学习思想才是重要的。
如果在学习过程中发现有什么问题,欢迎留言!
原文链接:
http://www.cnblogs.com/cyq1162/archive/2010/08/24/1806300.html
相关文章推荐
- CYQ.Data 轻量数据层之路 自定义MDataTable绑定续章(七)
- CYQ.Data 轻量数据层之路 自定义MDataTable绑定续章(七)
- CYQ.Data 轻量数据层之路 自定义MDataTable绑定续章(七)
- CYQ.Data 轻量数据访问层(七) 自定义数据表实现绑定常用的数据控件(上)
- CYQ.Data 轻量数据层之路 MDataTable 绑定性能优化之章(十一)
- CYQ.Data 轻量数据访问层(七) 自定义数据表实现绑定常用的数据控件(上)
- CYQ.Data 轻量数据访问层(八) 自定义数据表实现绑定常用的数据控件(中)
- CYQ.Data 轻量数据访问层(八) 自定义数据表实现绑定常用的数据控件(中)
- CYQ.Data 轻量数据访问层(九) 自定义数据表实现绑定常用的数据控件(下)
- CYQ.Data 轻量数据访问层(九) 自定义数据表实现绑定常用的数据控件(下)
- CYQ.Data 轻量数据访问层(八) 自定义数据表实现绑定常用的数据控件(中)
- CYQ.Data 轻量数据层之路 MDataTable 绑定性能优化之章(十一)
- CYQ.Data 轻量数据访问层(九) 自定义数据表实现绑定常用的数据控件(下)
- CYQ.Data 轻量数据访问层(七) 自定义数据表实现绑定常用的数据控件(上)
- CYQ.Data 轻量数据层之路 使用篇四曲 MAction 增删改(十五)
- CYQ.Data 轻量数据层之路 使用篇五曲 MProc 存储过程与SQL(十六)
- CYQ.Data 轻量数据层之路 优雅V1.4 辅助工具(十)
- CYQ.Data 轻量数据层之路 使用篇-MAction 数据查询 视频 E (二十二)
- CYQ.Data 轻量数据层之路 使用篇-裸身走走天涯 视频 A (十八)
- CYQ.Data 轻量数据层之路 使用篇-辅助工具枚举生成器 视频 C (二十)