日期:2014-05-19  浏览次数:20483 次

关于向ListBox中添加时判断重复值的问题
有一个DataGrid(ID为DataGrid1,里面有3列,第一列是checkbox列,后面两列都是数据绑定列),一个Button(ID为Button1,单击以后作用是将DataGrid1中checkbox选中的行中第3列的数据提取出来并绑定到Listbox中),一个ListBox(ID为ListBox1)
      我程序的作用是点击了DataGrid1上的checkbox后,点击按钮,就将checkbox选中行的第3列数据绑定到listbox中,但是不允许绑定已经存在与listbox中的数据
      目前的问题是:比如我点击DataGird1的第一行和第二行,相对应第3列的值为   a,   b.那么点击按钮,a和b出现到listbox中,没有问题,但是,
      当我再次点击DataGrid1上的第一行和第二行,然后继续点击按钮,这次我的程序可以判断a已经存在与listbox中,不允许添加,但是b无法继续判断,还是添加进去,这样listbox中的值就是a,b,b.
      怎样才能让b也判断出已经存在并不允许添加呢?望高手赐教!!

      下面是按钮事件的代码.
private   void   Button1_Click(object   sender,   System.EventArgs   e)
{
foreach(DataGridItem   i   in   DataGrid1.Items)
{
checkBox   =   (CheckBox)i.FindControl( "ckbid ");
if(checkBox.Checked)
{
string   tempString   =   i.Cells[3].Text.ToString();
if(ListBox1.Items.Count   ==   0)
{

this.ListBox1.Items.Add(new   ListItem(tempString,tempString));
}
else
{

foreach(ListItem   listItem   in   ListBox1.Items)
{
if(tempString   !=   listItem.Value)
{
ListBox1.Items.Add(new   ListItem(tempString,tempString));
break;
}
else
{
Response.Write( " <script> alert( '错误,该值已经在Listbox中存在 ') </script> ");
break;
}
}
}
}
}
}

------解决方案--------------------
你写一个Arraylist~然后每次你把这个数据放入ListBox的时候~也把这个数据放入ArrayList~之后~在每次你放新的数据进入ListBox之前~判断一下ArrayList里面有没有就可以了~如果有就不加入ListBox
------解决方案--------------------
new ListItem(tempString,tempString)listitem的创建一个是value(相当于数据表的关键字),一个是text(这个是listbox显示出的文字),那么在你加入到listbox的时候就不要创建一个value和text都相同的listitem,要创建不同,且value唯一的!!这样当你加入相同的就会出现异常,你就可以catch住了