日 历

2008 8.29 Fri
     12
3456789
10111213141516
17181920212223
24252627282930
31      
«» 2008 - 8 «»

文章搜索

日志文章

2008年03月13日 17:22:30

listbox一些操作

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).移至首条
      //
将被选中项的索引设置为0OK
      ListBox.SelectIndex=0;
    (2).
移至尾条
      //
将被选中项的索引设置为ListBox.Items.Count-1OK
      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后会出现错误



Move the Item of ListBox
.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.Text ;
  this.ListBox1.Items.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事件的隐藏输入框
再将ASP.NET控件ListBox中加入双击事件声明
<html>
<head>
  <script language="javascript">
  function ListBox1_DoubleClick() {
    /* we will change value of this hidden field so
  that in
  page load event we can identify event.
        */
    document.forms[0].ListBox1Hidden.value = "doubleclicked";
    document.forms[0].submit();
  }
</script>
</head>
<body>
  <form runat="server">
      <div>Double click on Listbox
        <br />
        <asp:ListBox id="ListBox1"
              ondblclick="ListBox1_DoubleClick()" runat="server">
          <asp:ListItem Value="1">One</asp:ListItem>
          <asp:ListItem Value="2">Two</asp:ListItem>
          <asp:ListItem Value="3">Three</asp:ListItem>
          <asp:ListItem Value="4">Four</asp:ListItem>
        </asp:ListBox>
        <input type="hidden" name="ListBox1Hidden" />
      </div>
      <div>click on button
        <br />
        <asp:Button id="Button1" onclick="Button1_Click"
          runat="server" Text="Button"/>
      </div>
  </form>
</body>
</html>


最后在WEB窗体加载时候执行下列代码就能实现双击ListBoxItem执行一些操作

void Page_Load(Object sender, EventArgs e){
  if(Request.Params["ListBox1Hidden"] != null
  && (string)Request.Params["ListBox1Hidden"] == "doubleclicked" {
  //This means It was double click
  Response.Write("Double Click was fired selected item is "
  + ListBox1.SelectedItem.Text);

  //可以在这里加要运行的代码
  }
}

希望这篇文章能对大家有帮助,不要再受CSDN上帖子的误导了
ListBox基本功能首先是列表项的添加,客户端实现代码添加在listbox实例化代码中间,例如:
<asp:ListItem Value="value" Selected=True>Text</asp:ListItem>

若在服务器端实现,为避免每次加载时执行添加列表项,上述代码包含在下面代码中:
if(!IsPostBack)
{
}

WebForm
页面上须添加2listboxlistbox1lixtbox2)和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.Selected==true)
{
ListBox2.Items.Add(ListBox1.Items);
ListBox1.Items.Remove(ListBox1.Items);
}
else
i+=1;
}

这样只能实现单项添加,想要实现多项添加,首先设置ListBox1SelectionMode属性值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
数据库绑定就是指定他的DataSourceDataTextField属性,
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.Selected=ListBox1.Items.Selected;
        }
    }


如果是前台js的话,这里讨论过很多,找找看,思路是一样的。

Tags: listbox  

类别: net天空 |  评论(0) |  浏览(1220) |  收藏
发表评论