1. 属性列表:
SelectionMode 组件中条目的选择类型,即多选 (Multiple) 、单选 (Single)
Rows 列表框中显示总共多少行
Selected 检测条目是否被选中
SelectedItem 返回的类型是 ListItem ,获得列表框中被选择的条目
Count 列表框中条目的总数
SelectedIndex 列表框中被选择项的索引值
Items 泛指列表框中的所有项,每一项的类型都是 ListItem
2. 取列表框中被选中的值
ListBox.SelectedValue
3. 动态的添加列表框中的项:
ListBox.Items.Add(" 所要添加的项 ");
4. 移出指定项:
// 首先判断列表框中的项是否大于 0
If(ListBox.Items.Count > 0 )
{
// 移出选择的项
ListBox.Items.Remove(ListBox.SelectedItem);
}
5. 清空所有项:
// 首先判断列表框中的项是否大于 0
If(ListBox.Items.Count > 0 )
{
// 清空所有项
ListBox.Items.Clear();
}
6. 列表框可以一次选择多项:
只需设置列表框的属性 SelectionMode="Multiple", 按 Ctrl 可以多选
7. 两个列表框联动,即两级联动菜单
// 判断第一个列表框中被选中的值
switch(ListBox1.SelectValue)
{
// 如果是 "A" ,第二个列表框中就添加这些:
case "A"
ListBox2.Items.Clear();
ListBox2.Items.Add("A1");
ListBox2.Items.Add("A2");
ListBox2.Items.Add("A3");
// 如果是 "B" ,第二个列表框中就添加这些:
case "B"
ListBox2.Items.Clear();
ListBox2.Items.Add("B1");
ListBox2.Items.Add("B2");
ListBox2.Items.Add("B3");
}
8. 实现列表框中项的移位
即:向上移位、向下移位
具体的思路为:创建一个 ListBox 对象,并把要移位的项先暂放在这个对象中。
如果是向上移位,就是把当前选定项的的上一项的值赋给当前选定的项,然后
把刚才新加入的对象的值,再附给当前选定项的前一项。
具体代码为:
// 定义一个变量,作移位用
index = -1;
// 将当前条目的文本以及值都保存到一个临时变量里面
ListItem lt=new ListItem (ListBox.SelectedItem.Text,ListBox.SelectedValue);
// 被选中的项的值等于上一条或下一条的值
ListBox.Items[ListBox.SelectedIndex].Text=ListBox.Items[ListBox.SelectedIndex + index].Text;
// 被选中的项的值等于上一条或下一条的值
ListBox.Items[ListBox.SelectedIndex].Value=ListBox.Items[ListBox.SelectedIndex + index].Value;
// 把被选中项的前一条或下一条的值用临时变量中的取代
ListBox.Items[ListBox.SelectedIndex].Test=lt.Test;
// 把被选中项的前一条或下一条的值用临时变量中的取代
ListBox.Items[ListBox.SelectedIndex].Value=lt.Value;
// 把鼠标指针放到移动后的那项上
ListBox.Items[ListBox.SelectedIndex].Value=lt.Value;
9. 移动指针到指定位置:
(1). 移至首条
// 将被选中项的索引设置为 0 就 OK 了
ListBox.SelectIndex=0;
(2). 移至尾条
// 将被选中项的索引设置为 ListBox.Items.Count-1 就 OK 了
ListBox.SelectIndex=ListBox.Items.Count-1;
(3). 上一条
// 用当前被选中的索引去减 1
ListBox.SelectIndex=ListBox.SelectIndex - 1;
(4). 下一条
// 用当前被选中的索引去加 1
ListBox.SelectIndex=ListBox.SelectIndex + 1;
this.ListBox1.Items.Insertat(3,new ListItem(" 插入在第 3 行之后项 ",""));
this.ListBox1.Items.Insertat(index,ListItem)
ListBox1.Items.Insert(0,new ListItem("text","value"));
ASP.NET 中添加控件 ListBox , 属性设为 Multiple , 则可进行多选 .
就以两个 listbox 之间多选添加项目为例 .
两个控件为 listboxleft , listboxright 定义了一个动态数组用于中间存储 arrRight . 具体代码如下 :
// 读取右边选中项目
ArrayList arrRight = new ArrayList();
foreach(ListItem item in this.ListBoxRight.Items) // 按类型 listitem 读取 listbox 中选定项
{
if(item.Selected) // 判断是否选中
{
arrRight.Add(item);
}
}
// 右边移除选定项目 左边添加
foreach(ListItem item in arrRight)
{
this.ListBoxLeft.Items.Add(item);
this.ListBoxRight.Items.Remove(item);
}
不能将 item 的添加删除直接写在 if(item.Selected){} 内 , 因为项目 remove 后会出现错误
.aspx
--------------------------------
<asp:ListBox id="ListBox1" style="Z-INDEX: 105; LEFT: 96px; POSITION: absolute; TOP: 344px" runat="server">
<asp:ListItem Value="a1">a1</asp:ListItem>
<asp:ListItem Value="a2">a2</asp:ListItem>
<asp:ListItem Value="a3">a3</asp:ListItem>
</asp:ListBox>
----------------------------------
.cs
//for 个
private void Button1_Click(object sender, System.EventArgs e){
if (this.ListBox1.SelectedIndex>=0)
{
int i = ListBox1.SelectedIndex;
if(i>0)
{
string values = this.ListBox1.Items[i].Text ;
this.ListBox1.Items[i].Text = this.ListBox1.Items[i-1].Text ;
this.ListBox1.Items[i-1].Text = values;
}
}
}
ASP.NET 中ListBox 实现Double Click 事件
2007-06-24 13:18
在ASP.NET 中的ListBox 控件的使用中很多人都发现没有了WINFORM 中ListBox 的鼠标双击事件 这样就给我们开发带来很多不方便的地方 也看了很多CSDN 上用JS 来实现双击事件的方法, 都是不完整的, 最后发现以下方法是最有效的 首先在WEB 页面上加入JS 脚本和存放ListBox 事件的隐藏输入框
最后在 WEB 窗体加载时候执行下列代码就能实现双击 ListBox 中 Item 执行一些操作
希望这篇文章能对大家有帮助, 不要再受CSDN 上帖子的误导了 |
ListBox 基本功能首先是列表项的添加 , 客户端实现代码添加在 listbox 实例化代码中间 , 例如:
<asp:ListItem Value="value" Selected=True>Text</asp:ListItem>
若在 服务器 端实现 , 为避免每次加载时执行添加列表项 , 上述代码包含在下面代码中 :
if(!IsPostBack)
{
}
WebForm 页面上须添加 2 个 listbox ( listbox1 和 lixtbox2 )和 2 个命令按钮 ,listbox1 不为空。列表项从 listbox1 添加到 listbox2 须在 Button1 单击事件中调用 Add 方法:
ListBox2.Items.Add(ListBox1.SelectedValue);
若要从 listbox2 中删除列表项的话须在 Button2 单击事件中调用 Remove 方法:
ListBox2.Items.Remove(ListBox2.SelectedValue);
列表项从 listbox1 添加到 listbox2 后 , 列表项从 listbox1 中删除:
int i=0;
while(i<ListBox1.Items.Count)
{
if(ListBox1.Items[i].Selected==true)
{
ListBox2.Items.Add(ListBox1.Items[i]);
ListBox1.Items.Remove(ListBox1.Items[i]);
}
else
i+=1;
}
这样只能实现单项添加 , 想要实现多项添加 , 首先设置 ListBox1 的 SelectionMode 属性值 Multiple,ListBox1 允许多项选中。
在 Button1 单击事件中添加
foreach(ListItem MyItem in ListBox1.Items)
if(MyItem.Selected==true)
ListBox2.Items.Add(MyItem);
想要一次清空 ListBox2 中所有选项可在 Button2 单击事件中调用 clear 方法 ,
ListBox2.Items.Clear();
若列表项已经添加 , 不允许二次添加, Button1 单击事件中的代码包含在:
if(ListBox2.Items.FindByValue(ListBox1.SelectedValue)==null)
{
}
ListBox 与 数据库 绑定就是指定他的 DataSource 和 DataTextField 属性 ,
ListBox2.DataSource= 数据源 ;
ListBox2.DataTextField=" 字段名 ";
ListBox2.DataBind();
如果是在后台做的话
AutoPostBack =true
然后给第一个 listbox 加事件( SelectedIndexChanged )
然后一个遍历就可以出来了
CODE:
private void ListBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{
for(int i=0;i<ListBox1.Items.Count;i++){
ListBox2.Items[i].Selected=ListBox1.Items[i].Selected;
}
}
如果是前台 js 的话,这里讨论过很多,找找看,思路是一样的。