今天发现了一个问题。Page_load的时候绑定数据源语句里使用了Order By子句。所以AspxGridView里的数据不是按主键排序了。
当我点击搜索按钮时,所执行的SQL语句里没有Order By子句,于是搜索出来的数据的排序是按照主键来排序。
这时候当我删某一行的时候,就会传错键值了。
原因是点击删除时AspxGridView回调,重新按照Page_Load里的Sql语句绑定了数据源.也就是重新排序了。所以你点的那一行的数据,不一定是你真正想删除的那行。
解决方法:
1.搜索时候的SQL语句也加上一样的Order By子句。
2.使用AspxGridView控件删除行功能。不要直接对数据库操作。。(这条不知道对不对,只是自己的想法)可以参考Key_Sky的这篇文章http://www.cnblogs.com/wendy_soft2008/archive/2008/11/08/1329461.html#commentform