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