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

