在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
以下是关键代码
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


浙公网安备 33010602011771号