Terry82

关注Asp.net|SQL|XML|WebService|Javascript|CSS|OOP
                     Happy code!
在AjaxControlToolkit中有一个控件ReorderList可以实现拖动排序,它的示例程序用的是ObjectDataSource作数据源,而且数据没有保存到数据库中。我把它改成绑定到DataTable,并且数据是保存到数据库中。

以下是关键代码
    protected void ReorderList1_ItemReorder(object sender,AjaxControlToolkit.ReorderListItemReorderEventArgs e)
    
{
        String queryString 
= "select * from Menu order by Priority asc";

        DataTable dt 
= GetData(queryString).Tables[0];
        DataRowCollection rows 
= dt.Rows;
        
int oldIndex = e.OldIndex;
        
int newIndex = e.NewIndex;
        
string SortOrderField = this.ReorderList1.SortOrderField;

        
int NewListOrder = (int)rows[newIndex][SortOrderField];

        
if (oldIndex < newIndex) //item moved down
        {
            
for (int i = oldIndex + 1; i <= newIndex; i++)
            
{
                rows[i][SortOrderField] 
= (int)rows[i][SortOrderField] - 1;
            }

        }

        
else  //item moved up
        {
            
for (int i = oldIndex - 1; i >= newIndex; i--)
            
{
                rows[i][SortOrderField] 
= (int)rows[i][SortOrderField] + 1;
            }

        }

        rows[oldIndex][SortOrderField] 
= NewListOrder;

        BatchUpdate(dt,
10);

        BindReorderList();
    }

源码:Reorder.rar
posted on 2007-05-24 11:15  Terry82  阅读(1488)  评论(3编辑  收藏  举报