对栏目的排序

最近系统发现栏目排序的bug,研究一下发现开发者考虑过少,给1个排序ID,就要实现添加,删除,排序移动.
在理想情况,排序id连续且不重复,工作正常.但排序ID不连续和重复将导致排序功能错误.
由于时间紧,我在绑定grid之前,将datatable中的排序id的值与循环索引i进行比较,如果不相等则进行update排序id=i;
然后重新select,此时可保证后面操作正常.

 1              DataTable dt =   new  DataTable();
 2               string  sql  =   " select * from GS_Page  ORDER BY RankId  " ;
 3              dt  =  DataAccess.ExecuteDataset(ConnStrManage.GetConnStr,CommandType.Text,sql).Tables[ 0 ];
 4               string  sqlup  = "" ;
 5               for  ( int  i = 0 ;i < dt.Rows.Count;i ++ )
 6              {
 7                   if  (dt.Rows[i][ " RankId " ].ToString() != i.ToString())
 8                  {
 9                      sqlup  +=   " update GS_Page set RankId =  " + i + "  where ID = " + dt.Rows[i][ " ID " ] + " ; " ;
10                  }
11              }
12               if  (sqlup != "" )
13              {
14                  DataAccess.ExecuteNonQuery(ConnStrManage.GetConnStr ,CommandType.Text,sqlup);
15                  dt  =   null ;
16                  dt  =  DataAccess.ExecuteDataset(ConnStrManage.GetConnStr,CommandType.Text,sql).Tables[ 0 ];
17              }

 
当然这样做难免性能低下,如果时间允许,我想页面的排序移动可以用脚本实现(prortotype.js辅助),而调整完毕,点保存,才进行更新,这应该才是比较好的做法吧

你可能感兴趣的:(排序)