//在窗体加载的时候执行 foreach (crm p in ls)
// {
// AddProduct(p);
// }
//循环添加实体到listview1
private void AddProduct(crm p)
{
ListViewItem lvi;
lvi = new ListViewItem(p.Order.ToString());
lvi.Tag = p.Id;
lvi.SubItems.Add(p.Name);
lvi.SubItems.Add(p.Tel.ToString());
lvi.SubItems.Add(p.Qq.ToString());
lvi.SubItems.Add(p.Address.ToString());
listView1.Items.Add(lvi);
} List<int> list=new List<int>();
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
if (this.listView1.SelectedItems.Count < 1)
{
return;
}
ListViewItem lvi = this.listView1.SelectedItems[0];
selectid = (int)lvi.Tag;//保存的id赋值给它
list.Add(selectid);
} //删除按钮
private void button6_Click(object sender, EventArgs e)
{ if (this.listView1.SelectedItems.Count < 1)
{
MessageBox.Show("请选择要删除的记录", "提示");
return;
}
else
{
for (int i = 0; i < list.Count; i++)
{
ProductDao.deleteById(list[i]);//数据操作层
ListViewItem lvi = this.listView1.SelectedItems[0];
lvi.Remove();
}
}
//............部分代码省略
}当用户每选择listview里面的一条数据的时候,就会触发第一个事件,我就会用list存它的id,id是我在加载到listview的时候,已经存在tag里了,
当用户点击“删除”按钮的时候,我就会拿出刚才存起来的id集合,一条条的删除,并且从listview里面移除掉那条数据现在最大的问题是删除方法那里for方法,那个list很奇怪,每循环一次,list的count就加1了越来越大,是怎么回事呢?还是大家有什么另外的方法帮我实现相同的功能呢?
解决方案 »
- 无边窗体怎么最小化(控件不是直接在窗体上)
- C#怎样调用C#写的COM组件
- 看MSDN看不懂 谁能解释一下呀TranslateTransform
- 关于XML文件打开的问题
- 在C#当中有没有像VB中的AscW函数???请VB和C#高手出招.....
- 菜鸟求助:如何写访问oracle的数据访问类呢?急啊!!!
- HTTPWebRequest模拟WEB登录,求方法。
- 为什么总是为空
- 关于OleDbDataAdapter的事务问题(急)
- 请教,调用PDF控件的时候出错
- 如何用最好的算法计算出结果
- 当 A可以整除B的时候: C=A/B 不能整除的时候:如果A>B ,C=A/B+1,否则C=1,最简单的写法,应该怎样写?
{
ProductDao.deleteById(list[i]);//数据操作层
ListViewItem lvi = this.listView1.SelectedItems[0];
lvi.Remove();
}
写错了
应该是listView1.Items.Remove(lvi);吧
现在最大的问题是删除方法那里for方法,那个list很奇怪,每循环一次,list的count就加1了越来越大,是怎么回事呢?
count不可能+1, 最多你移除listitm时-1
{
if (this.listView1.SelectedItems.Count < 1)
{
return;
}
ListViewItem lvi = this.listView1.SelectedItems[0];
selectid = (int)lvi.Tag;//保存的id赋值给它
//修改这里,如果list里没有才添加
if(!list.Contains(selectid))
{
list.Add(selectid);
}
}
if (this.listView1.SelectedItems.Count < 1)
{
MessageBox.Show("请选择要删除的记录", "提示");
return;
}
else
{
//直接删就行了啊。
ListViewItem lvi = this.listView1.SelectedItems[0];
ProductDao.deleteById((int)lvi.Tag);//数据操作层
listView1.Items.Remove(lvi); }
}
因为你里面是累加的,没用重置,所以会出现你说的问题,所以你需要用一下清空,那样就不会了,像这种问题你可以打上断点,调试一下,学着自己找一下错误,你可以看一下它走的过程,这样有助于你自己的提高
记得是按F11祝你好运
逐条删除啊。