ListBox 上下移位

HTML:
    <form id="form1" runat="server">
    <div>
    <asp:ListBox ID="ListBox1" runat="server" Height="106px">
    <asp:ListItem Value="1 ">1 </asp:ListItem>
    <asp:ListItem Value="2 ">2 </asp:ListItem>
    <asp:ListItem Value="3 ">3 </asp:ListItem>
    <asp:ListItem Value="4 ">4 </asp:ListItem>
    <asp:ListItem Value="5 ">5 </asp:ListItem>
    <asp:ListItem Value="6 ">6 </asp:ListItem>
</asp:ListBox><br />
        <asp:Button ID="ButtonUp" runat="server" CommandName="up" OnClick="ButtonUp_Click"
            Text="向上移动一位" Width="134px" />
        <asp:Button ID="ButtonDown" runat="server" CommandName="down" OnClick="ButtonUp_Click"
            Text="向下移动一位" Width="138px" /><br />
    </div>
    </form>

CS:
protected void ButtonUp_Click(object sender, EventArgs e)
    {
        //向上下移动一条 事件
        if (((Button)sender).CommandName == "up" && ListBox1.SelectedIndex > 0 || ((Button)sender).CommandName == "down" && ListBox1.SelectedIndex < ListBox1.Items.Count - 1)
        { //判断传来的命令名必须是 up并且所选条目的索引必须大于0 或者 down并且所选条目必须小于最大项

            int index;//为了减少代码,这里做一个对变量的判断,以后就直接调用变量,
            if (((Button)sender).CommandName == "up")
            {
                index = -1;//以后的索引本来就是在当前的条目上加一或者减,所以这个方法很不错 
            }
            else
            {
                index = 1;
            }
            ListItem lt = new ListItem(ListBox1.SelectedItem.Text, ListBox1.SelectedValue);//将当前条目的文本以及值都保存到一个临时变量里面
            ListBox1.Items[ListBox1.SelectedIndex].Text = ListBox1.Items[ListBox1.SelectedIndex + index].Text;//被选中项的值等于上一条或者下一条的值
            ListBox1.Items[ListBox1.SelectedIndex].Value = ListBox1.Items[ListBox1.SelectedIndex + index].Value;//被选中项的值等于上一条或者下一条的值
            ListBox1.Items[ListBox1.SelectedIndex + index].Text = lt.Text;//把被选中项的上一条或者下一条的值用临时变量中的取代
            ListBox1.Items[ListBox1.SelectedIndex + index].Value = lt.Value;//把被选中项的上一条或者下一条的值用临时变量中的取代
            ListBox1.SelectedIndex = ListBox1.SelectedIndex + index;//把鼠标指针放到移动后的那条上
        }
    }

注释:
移位包括二种,其一是向上移位,其二是向下移位。程序中具体的实现思路是:创建一个ListItem对象,并把要移位指定的条目中的内容先暂放在此新建的这个对象中。如果选定的是向上移位,就把当前选定的条目的上一个条目的值赋值给当前选定的条目,然后把刚才新建的对象的值,再赋值给选定条目的上一个条目,完成条目的向上移位操作。对于向下移位,可以仿效上面的做法,但和上面做法的主要区别在于不是选定条目的上一个条目了,而是选定条目的下一个条目。
在一般编程中都应该判断列表中是否有数据,这里不用了,因为加上判断,代码太多了,没意思

posted on 2007-07-31 14:19  迷你软件  阅读(343)  评论(0编辑  收藏  举报

本网站绝大部分资源来源于Internet,本站所有作品版权归原创作者所有!!如有以下内容:章节错误、非法内容、作者署名出错、版权疑问、作品内容有违相关法律等请及时与我联系. 我将在第一时间做出响应!本站所有文章观点不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。