求助:关于Rows.RemoveAt(i)

nowpan 2012-04-12 05:18:41
我对取出的DataTable尝试了下列两种方法来删除某一行数据:
1: resultDt.Rows[i].Delete();
resultDt.AcceptChanges();
2: resultDt.Rows.RemoveAt(i);

第一次进这个列表页面时,需要被删除的行都被删除了,展示正确。然后我在页面点击一个超链接进到另一个页面,然后点击浏览器上的后退按钮返回列表页面,这个时候先前被删除的行又重新出现了。
请问这是怎么回事呢?需要怎么修改呢?
...全文
219 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
禁止浏览器缓存
手可摘星辰 2012-04-12
  • 打赏
  • 举报
回复
按你说的后退又出现了我感觉很正常,不知道,还是接分把
nowpan 2012-04-12
  • 打赏
  • 举报
回复
终于搞好了,发现是Visual Studio 2010自带的服务器的问题,把程序用操作系统自带的IIS建个网站再测试就没问题了.
另外,发现就算是用Visual Studio 2010自带的服务器,只要是用傲游访问也没问题,但是用ie9访问就有问题。
怀疑是Visual Studio 2010自带的服务器以及IE9的内部缓存机制有关。
ShadowInWind 2012-04-12
  • 打赏
  • 举报
回复
你第2次
var size = '<%=dt.Rows.Count %>';
这个地方估计就出错了
你在 onload="init();"
改成 onload="alert('123');init();"
nowpan 2012-04-12
  • 打赏
  • 举报
回复
甚至,<script language="ecmascript">
function init() {
var size = '<%=dt.Rows.Count %>';
alert(size);
}
</script>
</head>
<body onload="init();">
这是我写在页面上的
第二次根本都冇alert哒
第二次指的是点后退按钮的时候
nowpan 2012-04-12
  • 打赏
  • 举报
回复
pageload里面处理也不行,点后退按钮时,我发现根本就没再进pageload里面了。
nowpan 2012-04-12
  • 打赏
  • 举报
回复
回复5、6楼
我明白是重新请求这个页面了,但是,这时候无非有两种可能,
一:重新请求页面,并且重新操作数据库查询数据。可是,我通过断点调试,程序并没有从数据库重新请求数据。
二:重新请求页面,但是不重新操作数据库,那DT就只有可能是从缓存里来的。而在我第一次请求页面时,已经用Rows.RemoveAt(i)方法删除了指定的行,那缓存里为什么会存了一个没有被删除行的DT呢?
蝶恋花雨 2012-04-12
  • 打赏
  • 举报
回复
或者屏蔽后退按钮。
蝶恋花雨 2012-04-12
  • 打赏
  • 举报
回复
首先你没有真正删除。你后退就重新请求这个页面。然后又重新加载数据了。 你应该在pageload里面处理
EnForGrass 2012-04-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

再补充一下,第一次进页面是,通过断点可以看到程序进了删除指定行的那句话。但是点后退按钮时,根本就没有进那句话,也就是说根本没有再操作一次数据库,貌似DT是从什么缓存中读出来的,而这个缓存中的DT中那几行是没有被删除的。
但是据我所知,Rows.RemoveAt(i)是会真正删除指定行的,浏览器中就算有缓存,存的也应该是这个被删除了行的DT啊。
[/Quote]
那就是你点击后退按钮,重新从数据库加载了DT
nowpan 2012-04-12
  • 打赏
  • 举报
回复
再补充一下,第一次进页面是,通过断点可以看到程序进了删除指定行的那句话。但是点后退按钮时,根本就没有进那句话,也就是说根本没有再操作一次数据库,貌似DT是从什么缓存中读出来的,而这个缓存中的DT中那几行是没有被删除的。
但是据我所知,Rows.RemoveAt(i)是会真正删除指定行的,浏览器中就算有缓存,存的也应该是这个被删除了行的DT啊。
蝶恋花雨 2012-04-12
  • 打赏
  • 举报
回复
首先你这样删除又不是完全在数据库中删除了。所以点击浏览器退回后因为又请求这个页面了。因此数据又被重新绑定了。
nowpan 2012-04-12
  • 打赏
  • 举报
回复
我不需要删除数据库的数据。只是需要在程序里进行一次筛选而已。
EnForGrass 2012-04-12
  • 打赏
  • 举报
回复
那说明数据库的数据没删除成功啊

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧