积极答复者
嵌套中的ListView无法正确删除记录。

问题
-
有两个ListView,lv1和lv2,lv2是嵌套在lv1中的。我是在lv1的ItemDataBound事件中对lv2进行数据绑定的。代码如下。
ListView lv = (ListView)e.Item.FindControl("lv2");
DataTable dt = new DataTable();//填充数据
dt = GetInfo();//循环dt,并删除所有行
for (int j = 0; j < dt.Rows.Count;j++ )
{
dt.Rows[j].Delete();
}dt.AcceptChanges();
此时并没有删除这个dt下面的所有行。而是根据一定规律删除的。
例如lv1中一共显示3条记录
其中lv1中的第一条记录在lv2嵌套中绑定10条记录
其中lv1中的第二条记录在lv2嵌套中绑定3条记录
其中lv1中的第三条记录在lv2嵌套中绑定7条记录当通过循环dt删除记录时。中能删除行号为单的记录。例如此例只能删除lv1第一条记录在lv2绑定中10条记录的1、3、5、7、9行的记录,2、4、6、8、10删除不了。
lv1第二条记录在lv2绑定的3条记录,只能删除1、3行,第二行删除不了。
只能删除行号为单数的记录,双数的删除不了,请问该如何才能删除。
我需要根据条件来筛选dt中的记录。
lv.DataSource = dt;
lv.DataBind();
答案
-
当然。因为你删除了DataTable中的某一行,以下的行索引全部都改变了,
解决方法:
for (int j = 0; j < dt.Rows.Count;j++ )
{
dt.Rows[j].Delete();
--j; //增加这一行
}
如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者
If you do not have QQ, please open the page and download it and click the image to talk or leave message for me.
下载MSDN桌面工具(Vista,Win7)
下载Technet桌面小工具(Vista,Win7)
慈善点击,点击此处- 已标记为答案 cycc 2011年10月2日 13:43
全部回复
-
听起来像漏删AlternatingItemTemplate裡的控件
您能不能把两个ListView的
<AlternatingItemTemplate>
</AlternatingItemTemplate>都拿掉试试
不然得再请您整理个完整的Code贴上来让大家查看您是依什么规律删除了。
Shadowと愉快なコード達 -
当然。因为你删除了DataTable中的某一行,以下的行索引全部都改变了,
解决方法:
for (int j = 0; j < dt.Rows.Count;j++ )
{
dt.Rows[j].Delete();
--j; //增加这一行
}
如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者
If you do not have QQ, please open the page and download it and click the image to talk or leave message for me.
下载MSDN桌面工具(Vista,Win7)
下载Technet桌面小工具(Vista,Win7)
慈善点击,点击此处- 已标记为答案 cycc 2011年10月2日 13:43
-
不是dt.Rows.Delete是打上删除标志,并没有删除吗?行索引不会改变吗?不是要AcceptChanges()之后才会真正删除吗?
不是,Delete其实是标记删除标记,但是实际内部计算的时候忽略了此行了。
如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者
If you do not have QQ, please open the page and download it and click the image to talk or leave message for me.
下载MSDN桌面工具(Vista,Win7)
下载Technet桌面小工具(Vista,Win7)
慈善点击,点击此处