[交流]当GridView+SqlDataSource遇上UniqueIdentifier

athossmth 2006-05-13 03:50:29
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,就由数据库负责了。

...全文
240 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
ldw701 2006-06-06
  • 打赏
  • 举报
回复
mark 一下

13,347

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET技术前瞻
社区管理员
  • .NET技术前瞻社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧