2个ListBox之间转移数据,通常左侧的是从数据库动态读取出来的数据,然后右侧是用户从左侧选择数据项后添加的,这种情况在设置权限等场合经常用到,如下图:
功能实现起来也很简单,实现方法如下:
/// <summary>
/// 选择
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnSave_Click(object sender, EventArgs e)
{
int count = listBox1.Items.Count;
int index = 0;
for (int i = 0; i < count; i++)
{
ListItem item = listBox1.Items[index];
if (listBox1.Items[index].Selected == true)
{
listBox1.Items.Remove(item);
listBox2.Items.Add(item);
index--;
}
index++;
}
}
/// <summary>
/// 取消
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnCancel_Click(object sender, EventArgs e)
{
int count = listBox2.Items.Count;
int index = 0;
for (int i = 0; i < count; i++)
{
ListItem item = listBox2.Items[index];
if (listBox2.Items[index].Selected == true)
{
listBox2.Items.Remove(item);
listBox1.Items.Add(item);
index--;
}
index++;
}
}
/// <summary>
/// 全部选择
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnSaveAll_Click(object sender, EventArgs e)
{
//定义中间动态存储
ArrayList arrRight = new ArrayList();
//读取左边listbox的item的选中项
foreach (ListItem item in this.listBox1.Items)
{
arrRight.Add(item);
}
//执行右移操作
foreach (ListItem item in arrRight)
{
this.listBox2.Items.Add(item);
this.listBox1.Items.Remove(item);
}
}
/// <summary>
/// 全部取消
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnCancelAll_Click(object sender, EventArgs e)
{
ArrayList arrLeft = new ArrayList();
//读取右边listboxitem的选中项
foreach (ListItem item in this.listBox2.Items)
{
arrLeft.Add(item);
}
//执行左移操作
foreach (ListItem item in arrLeft)
{
this.listBox1.Items.Add(item);
this.listBox2.Items.Remove(item);
}
}