ASP.NET:ListBox数据合并问题

时间: 2008-05-28 / 分类: 学习心得 / 浏览次数: 3,695 / 0个评论 发表评论

因为网站原来的数据分类比较混乱,于是我要将不同分类的数据进行合并。其实这是一个很简单的问题,只要保证合并分类之后,原来各个分类之下的数据能够转移到合并之后的类型下面就可以了。结合需要做的工作,我选择了ListBox和DropDownList。其实这是一个取巧的办法,因为我已经有了一个修改分类信息的模块,所以不需要考虑是不是合并到一个并不存在的分类了。只要在合并之后简单的修改一次分类的名称就OK了。

新鲜出炉的代码:

    ///
    ///
ListBox绑定新闻类别
    ///

    protected void typeListBoxBind()
    {
       
this.typeListBox.DataSource = objAdmin.ReturnNewsType();
       
this.typeListBox.DataBind();
    }
   
///
    ///
DropDownList绑定新闻类别
    ///

    protected void typeDropDownListBind()
    {
       
this.typeDropDownList.DataSource = objAdmin.ReturnNewsType();
       
this.typeDropDownList.DataBind();
    }
   
///
    /// 合并新闻类别
    ///
    ///
    ///

    protected void typeCombine_OnClick(object sender, EventArgs e)
    {
     
  string ddl_xwlbid = this.typeDropDownList.SelectedValue.Trim();
     
  for (int i = 0; i < this.typeListBox.Items.Count; i++)
     
  {
         
  if (this.typeListBox.Items[i].Selected)
         
  {
             
  string lb_xwlbid = this.typeListBox.Items[i].Value.Trim();
             
  if (ddl_xwlbid == lb_xwlbid)                              
 
             
  {
                 
  //要合并到的新闻类别,不需要任何改动
             
  }
             
  else
             
  {
                 
  //要合并掉的新闻类别,先将kb_xinwen中对应的新闻的xwlbid
                 
 
//改作要合并到的新闻类别的xwlbid,然后删除此分类
                 
  this.objAdmin.ChangeNewsType(lb_xwlbid, ddl_xwlbid);
                   
this.objAdmin.DeleteNewsType(lb_xwlbid);
             
  }
         
  }
     
  }
     
  ////////////////////重新绑定///////////
     
  this.typeBind();
     
  this.typeListBoxBind();
     
  this.typeDropDownListBind();

     
  this.errmsg.Text = 合并成功!;
    }

里面的ListBox和DporDownList设定的DataTextField和DataValueField都是相同的,我所要做的工作就是将选定的分类的Value跟要合并到的下拉列表中的选择的分类的Value进行比对,如果Value相同不做任何操作,如果不同,那么先将需要修改类别的新闻其对应的xwlbid进行修改,然后将这个分类删除。当所有的比对结束之后,重新绑定所有数据,显示成功信息。

=======ASP.NET中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).移至首条
          
//将被选中项的索引设置为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;

历史上的今天

2017年:理想与道德——评易中天《王安石变法》(10条评论)

2015年:病来如山倒(88条评论)

2014年:GJB7691-2012数字示波器检定规程(31条评论)

2013年:Thinkpad X230预装Win8降级到Win7(69条评论)

2011年:夜·济南(6条评论)

2011年:博客终于升级到Wordpress 3.X版本(112条评论)

2010年:如何保存整个页面用于离线阅读[译文136](54条评论)

2009年:《藏地密码》7 端午纪念精编版,PDF电子书…(0条评论)

2009年:《粉红豹2(Pink Panther 2)》(2条评论)

2009年:《藏地密码》7 香巴拉之夜 第五部分 正面交锋(下)(0条评论)

2009年:《藏地密码》7 香巴拉之夜 第五部分 正面交锋(上)(0条评论)

2006年:一日行踪(0条评论)

2006年:看看我的UC在线时长吧^_^(2条评论)

2006年:今天是什么好日子?(0条评论)

2006年:可悲,为了看到闾丘露薇的文章,不得不注册凤凰博客(0条评论)

发表评论

您的昵称 *

您的邮箱 *

您的网站