打印本文 打印本文 关闭窗口 关闭窗口
从ASP.NET Portal Starter Kit中学到的调整顺序新思路
作者:武汉SEO闵涛  文章来源:敏韬网  点击数1554  更新时间:2009/4/23 10:40:38  文章录入:mintao  责任编辑:mintao

ASP.NET Portal Starter Kit中有在列表框中选择指定项,通过点击上下按钮来实现排序的功能(如下图)。
   

通常我想到的方法是(以上移为例):获取选中项的排序号和选中项的上一项的排序号,交换它们的排序号即可。排序号的方式,就以1234……的形式,新建的标签的序号在最后一个的基础上加一。在ASP.NET Portal Starter Kit中采取的方式是:通过1357……的形式来表示排序号,每一次增删都重新构造排序号。在上移时,将当前的排序号减3,这样新的排序号就在它原来上一位的前面,且在上两位的后面。如:将第7位上移,那么新的顺序是13459

代码如下(部分代码,详细的可对照Tabs.ascx.cs中的代码看):

//上移下移代码

if (tabList.SelectedIndex != -1)

{

         int delta;

         //因为标签排序号是13579方式排列的

         //将一个标签的上移或下移一位,就把标签序号加减3,正好为一偶数就在前后一位的前面或后面。

         //如:将第7位上移,那么新的顺序是13459

         if (cmd == "down")

         {

                   delta = 3;

         }

         else

         {

                   delta = -3;

         }

         TabItem t;

         t = (TabItem) portalTabs[tabList.SelectedIndex];

         t.TabOrder += delta;

         // 重新排序构造新的排序号

         OrderTabs();

}

 

 

/// <summary>

/// portalTabs中的标签排序

/// </summary>

private void OrderTabs ()

{

         int i = 1;

         // 使用指定的比较器对部分 System.Collections.ArrayList 中的元素进行排序。

         // portalTabs中的对象是TabItemTabItem对象继承了IComparable接口,实现了以TabOrderCompareTo

         portalTabs.Sort();

         // renumber the order and save to database

         // 将排序后的信息存入XML

         foreach (TabItem t in portalTabs)

         {

                   // 将标签的排序号按1, 3, 5,递增的顺序排列

                   t.TabOrder = i;

                   i += 2;

                   // 将新的排序号写入用户配置文件

            &nbs

[1] [2]  下一页

打印本文 打印本文 关闭窗口 关闭窗口