[交流]当GridView+SqlDataSource遇上UniqueIdentifier

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,就由数据库负责了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值