现在的位置: 首页 > 综合 > 正文

常用功能:在ListBox间移动Items,改变Items的顺序

2012年10月09日 ⁄ 综合 ⁄ 共 6996字 ⁄ 字号 评论关闭
刚刚为了解决一个问题写了一个比较常用的功能:从一个ListBox中选择(转移)Items到另一个ListBox,改变Items在ListBox中的顺序.
截图如下:

实现代码如下:

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    Protected Sub btnMoveUp_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim Item As New ListItem
        Dim PrevIndex As Integer
        
'Move sites order of preference in up direction
        If lstSelectedSites.GetSelectedIndices.Length = 1 Then
            If lstSelectedSites.SelectedIndex <> -1 Then

                Item.Value = lstSelectedSites.SelectedValue
                Item.Text = lstSelectedSites.SelectedItem.ToString
                PrevIndex = CInt(lstSelectedSites.SelectedIndex) - 1
                If PrevIndex = -1 Then
                    Exit Sub
                End If
                lstSelectedSites.Items.Remove(lstSelectedSites.SelectedItem)
                lstSelectedSites.Items.Insert(PrevIndex, Item.Text)
                lstSelectedSites.Items.Item(PrevIndex).Value = Item.Value
                lstSelectedSites.SelectedIndex = PrevIndex

            End If
        End If
    End Sub

    Protected Sub btnMoveDown_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim Item As New ListItem
        Dim NextIndex As Integer
        
'Move sites order of preference in up direction
        If lstSelectedSites.GetSelectedIndices.Length 
= 1 Then
            If lstSelectedSites.SelectedIndex 
<> -1 Then

                Item.Value 
= lstSelectedSites.SelectedValue
                Item.Text 
= lstSelectedSites.SelectedItem.ToString
                NextIndex 
= CInt(lstSelectedSites.SelectedIndex) + 1
                If NextIndex 
= lstSelectedSites.Items.Count Then
                    Exit Sub
                End If
                lstSelectedSites.Items.Remove(lstSelectedSites.SelectedItem)
                lstSelectedSites.Items.Insert(NextIndex, Item.Text)
                lstSelectedSites.Items.Item(NextIndex).Value 
= Item.Value
                lstSelectedSites.SelectedIndex 
= NextIndex

            End If
        End If
    End Sub

    Protected Sub btnSelect_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim Item As New ListItem
        Dim j As Integer 
= lstAllSites.GetSelectedIndices().Length
        
'Move sites order of preference in up direction
        If j > 0 Then
            Dim i As Integer
            i = 0
            Do While (i < j)
                lstSelectedSites.Items.Insert(lstSelectedSites.Items.Count, lstAllSites.Items.Item(lstAllSites.GetSelectedIndices(i)))
                lstAllSites.Items.Remove(lstAllSites.Items.Item(lstAllSites.GetSelectedIndices(i)))
                j -= 1
            Loop
        End If
    End Sub

    Protected Sub btnUnSelect_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim Item As New ListItem
        Dim j As Integer = lstSelectedSites.GetSelectedIndices().Length
        
'Move sites order of preference in up direction
        If j 
> 0 Then
            Dim i As Integer
            i 
= 0
            Do While (i 
< j)
                lstAllSites.Items.Insert(lstAllSites.Items.Count, lstSelectedSites.Items.Item(lstSelectedSites.GetSelectedIndices(i)))
                lstSelectedSites.Items.Remove(lstSelectedSites.Items.Item(lstSelectedSites.GetSelectedIndices(i)))
                j 
-= 1
            Loop
        End If
    End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    
<title>Untitled Page</title>
</head>
<body>
    
<form id="form1" runat="server">
    
<div>
        
<asp:ScriptManager ID="ScriptManager1" runat="server">
        
</asp:ScriptManager>
        
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" 
            ChildrenAsTriggers
="False">
            
<ContentTemplate>
                
<table style="width: 100%;">
                    
<tr>
                        
<td>
                            
<asp:UpdatePanel UpdateMode="Conditional" ID="UPanellstAllSites" runat="server">
                                
<ContentTemplate>
                                    
<asp:ListBox BorderStyle="None" BackColor="white" ID="lstAllSites" runat="server"
                                        Height
="251px" Width="258px" Style="border: none;" SelectionMode="Multiple">
                                        
<asp:ListItem Value="1" Text="1" />
                                        
<asp:ListItem Value="2" Text="2" />
                                        
<asp:ListItem Value="3" Text="3" />
                                        
<asp:ListItem Value="4" Text="4" />
                                        
<asp:ListItem Value="5" Text="5" />
                                        
<asp:ListItem Value="6" Text="6" />
                                        
<asp:ListItem Value="7" Text="7" />
                                        
<asp:ListItem Value="8" Text="8" />
                                        
<asp:ListItem Value="9" Text="9" />
                                        
<asp:ListItem Value="10" Text="10" />
                                    
</asp:ListBox>
                                
</ContentTemplate>
                            
</asp:UpdatePanel>
                        
</td>
                        
<td>
                            
<asp:Button ID="btnSelect" runat="server" Text="Select" OnClick="btnSelect_Click" />
                            
<asp:Button ID="btnMoveUp" runat="server" Text="MoveUp" OnClick="btnMoveUp_Click" />
                            
<asp:Button ID="btnMoveDown" runat="server" Text="MoveDown" OnClick="btnMoveDown_Click" />
                            
<asp:Button ID="btnUnSelect" runat="server" Text="UnSelect" OnClick="btnUnSelect_Click" />
                        
</td>
                        
<td>
                            
<asp:UpdatePanel UpdateMode="Conditional" ID="UpdatePanel2" runat="server">
                                
<ContentTemplate>
                                    
<asp:ListBox BorderStyle="None" ID="lstSelectedSites" runat="server" Height="291px"
                                        Width
="258px" Style="background-color: #c6c6ce; border: none; text-decoration: none;
                                        text-align: center;"
 SelectionMode="Multiple"></asp:ListBox>
                                
</ContentTemplate>
                                
<Triggers>
                                    
<asp:AsyncPostBackTrigger ControlID="btnMoveDown" />
                                    
<asp:AsyncPostBackTrigger ControlID="btnMoveUp" />
                                
</Triggers>
                            
</asp:UpdatePanel>
                        
</td>
                    
</tr>
                
</table>
            
</ContentTemplate>
            
<Triggers>
                
<asp:AsyncPostBackTrigger ControlID="btnSelect" />
                
<asp:AsyncPostBackTrigger ControlID="btnUnSelect" />
            
</Triggers>
        
</asp:UpdatePanel>
    
</div>
    
</form>
</body>
</html>

这个功能在Winform里很常用的.

抱歉!评论已关闭.