Hi donny,
I have created one sample please refer below.
HTML
<div>
<asp:ListBox ID="lstItems" runat="server" Height="187px" Width="181px" SelectionMode="Multiple">
<asp:ListItem>Item 1</asp:ListItem>
<asp:ListItem>Item 2</asp:ListItem>
<asp:ListItem>Item 3</asp:ListItem>
<asp:ListItem>Item 4</asp:ListItem>
<asp:ListItem>Item 5</asp:ListItem>
<asp:ListItem>Item 6</asp:ListItem>
<asp:ListItem>Item 7</asp:ListItem>
<asp:ListItem>Item 8</asp:ListItem>
<asp:ListItem>Item 9</asp:ListItem>
<asp:ListItem>Item 10</asp:ListItem>
</asp:ListBox>
<br />
<br />
<asp:Button ID="btnUp" runat="server" Text="UP" OnClick="btnUp_Click" />
<asp:Button ID="btnDown" runat="server" Text="DOWN" OnClick="btnDown_Click" />
</div>
Code
protected void btnUp_Click(object sender, EventArgs e)
{
if (lstItems.SelectedIndex != -1)
{
int selectedItemIndex = lstItems.SelectedIndex;
List<ListItem> selectedItems = new List<ListItem>();
int repositionIndex = 0;
foreach (ListItem item in lstItems.Items)
{
if (item.Selected)
{
selectedItems.Add(item);
}
}
repositionIndex = selectedItemIndex - 1;
foreach (ListItem item in selectedItems)
{
lstItems.Items.Remove(item);
if (selectedItemIndex != 0)
lstItems.Items.Insert(repositionIndex, item);
repositionIndex++;
}
if (selectedItemIndex == 0)
{
repositionIndex = lstItems.Items.Count;
foreach (ListItem item in selectedItems)
{
lstItems.Items.Insert(repositionIndex, item);
repositionIndex++;
}
}
}
}
protected void btnDown_Click(object sender, EventArgs e)
{
if (lstItems.SelectedIndex != -1)
{
int selectedItemIndex = lstItems.SelectedIndex;
List<ListItem> selectedItems = new List<ListItem>();
int repositionIndex = 0;
bool isContainLastElement = false;
foreach (ListItem item in lstItems.Items)
{
if (item.Selected)
{
if (lstItems.Items.IndexOf(item) == lstItems.Items.Count - 1)
{
isContainLastElement = true;
}
selectedItems.Add(item);
}
}
repositionIndex = selectedItemIndex + 1;
foreach (ListItem item in selectedItems)
{
lstItems.Items.Remove(item);
}
repositionIndex = isContainLastElement ? 0 : repositionIndex;
foreach (ListItem item in selectedItems)
{
lstItems.Items.Insert(repositionIndex, item);
repositionIndex++;
}
}
}
Screenshot
