当GridView+SqlDataSource遇上UniqueIdentifier

2010-08-28 10:50:18来源:西部e网作者:

GridView是Microsoft visual studio.net 2005里的控件,由前一代的DataGrid发展而来,非常好用。

SqlDataSource也是.net中比前一代更强的数据源控件。

初级做法是,定义好SqlDataSource,让它成为GridView的DataSource,就可以显示数据;

进一步,定义DataSource的UpdateCommand与UpdateParameter,不用像.net 2002中那样另写MyDataGrid_ItemCommand之类的代码,就可以自动更新数据了。

具体步骤是,GridView会自动把Edit模式下的数据行的数据转化为SqlParameters中定义的对应Sql Paramter的值,然后执行SqlCommand里定义的Sql语句。

一切都很好,直到……如果使用UniqueIdentifier数据类型作为你的datakey。

uniqueidentifier类似GUID,是microsoft强烈推荐的primary key的数据类型选项(相反identity这样的int类型不被推荐)。但这时候.net将不能正确执行数据类型的转换。

这是一种常见类型的.net 2005+sql 2005的错误:同期推出应用项目开发工具与数据库,导致未能详细的进行测试。

解决方法也很简单,在SqlDataSource中,不要直接用

select MeetingId, MeetingDateTime, MeetingDesc from dbo.meeting

这样的sql语句,而改用

select cast(MeetingId as varchar(36)) MeetingId, MeetingDateTime, MeetingDesc from dbo.meeting

这样,.net部分就会按照varchar进行转换,而从varchar到uniqueidentifier,就由数据库负责了。

原文地址: http://blog.csdn.net/athossmth/archive/2006/05/13/727355.aspx

关键词:ASP.NET