求助:关于Rows.RemoveAt(i)

问题描述

我对取出的DataTable尝试了下列两种方法来删除某一行数据:1:resultDt.Rows[i].Delete();resultDt.AcceptChanges();2:resultDt.Rows.RemoveAt(i);第一次进这个列表页面时,需要被删除的行都被删除了,展示正确。然后我在页面点击一个超链接进到另一个页面,然后点击浏览器上的后退按钮返回列表页面,这个时候先前被删除的行又重新出现了。请问这是怎么回事呢?需要怎么修改呢?

解决方案

解决方案二:
那说明数据库的数据没删除成功啊
解决方案三:
我不需要删除数据库的数据。只是需要在程序里进行一次筛选而已。
解决方案四:
首先你这样删除又不是完全在数据库中删除了。所以点击浏览器退回后因为又请求这个页面了。因此数据又被重新绑定了。
解决方案五:
再补充一下,第一次进页面是,通过断点可以看到程序进了删除指定行的那句话。但是点后退按钮时,根本就没有进那句话,也就是说根本没有再操作一次数据库,貌似DT是从什么缓存中读出来的,而这个缓存中的DT中那几行是没有被删除的。但是据我所知,Rows.RemoveAt(i)是会真正删除指定行的,浏览器中就算有缓存,存的也应该是这个被删除了行的DT啊。
解决方案六:
引用4楼的回复:

再补充一下,第一次进页面是,通过断点可以看到程序进了删除指定行的那句话。但是点后退按钮时,根本就没有进那句话,也就是说根本没有再操作一次数据库,貌似DT是从什么缓存中读出来的,而这个缓存中的DT中那几行是没有被删除的。但是据我所知,Rows.RemoveAt(i)是会真正删除指定行的,浏览器中就算有缓存,存的也应该是这个被删除了行的DT啊。

那就是你点击后退按钮,重新从数据库加载了DT
解决方案七:
首先你没有真正删除。你后退就重新请求这个页面。然后又重新加载数据了。你应该在pageload里面处理
解决方案八:
或者屏蔽后退按钮。
解决方案九:
回复5、6楼我明白是重新请求这个页面了,但是,这时候无非有两种可能,一:重新请求页面,并且重新操作数据库查询数据。可是,我通过断点调试,程序并没有从数据库重新请求数据。二:重新请求页面,但是不重新操作数据库,那DT就只有可能是从缓存里来的。而在我第一次请求页面时,已经用Rows.RemoveAt(i)方法删除了指定的行,那缓存里为什么会存了一个没有被删除行的DT呢?
解决方案十:
pageload里面处理也不行,点后退按钮时,我发现根本就没再进pageload里面了。
解决方案十一:
甚至,<scriptlanguage="ecmascript">functioninit(){varsize='<%=dt.Rows.Count%>';alert(size);}</script></head><bodyonload="init();">这是我写在页面上的第二次根本都冇alert哒第二次指的是点后退按钮的时候
解决方案十二:
你第2次varsize='<%=dt.Rows.Count%>';这个地方估计就出错了你在onload="init();"改成onload="alert('123');init();"
解决方案十三:
终于搞好了,发现是VisualStudio2010自带的服务器的问题,把程序用操作系统自带的IIS建个网站再测试就没问题了.另外,发现就算是用VisualStudio2010自带的服务器,只要是用傲游访问也没问题,但是用ie9访问就有问题。怀疑是VisualStudio2010自带的服务器以及IE9的内部缓存机制有关。
解决方案十四:
按你说的后退又出现了我感觉很正常,不知道,还是接分把
解决方案十五:
禁止浏览器缓存

时间: 2024-05-04 02:52:29

求助:关于Rows.RemoveAt(i)的相关文章

紧急求助......怎么删除datagrid的行

问题描述 紧急求助......怎么删除datagrid的行,我是用XML作数据的能给具体的吗,谢谢!!! 解决方案 解决方案二:该回复于2008-06-30 09:26:38被版主删除解决方案三:我这有个flexGird的,你参考一下吧PrivateSub删除行ToolStripMenuItem_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)Handles删除行ToolStripMenuItem.ClickDimR1&,C1&a

C# Table.Rows[index].Delete()

        如果DataRow.Delete()方法被调用,相应行的RowState属性就会被设置成DataRowState.Deleted.当一个行的状态是DataRowState.Deleted的时候,正常情况下我们无法访问这一行.如果你需要检索已删除的原始数据,可以使用其条目属性的重载方法来传递DataRowVersion.Original参数. 代码像这样:      if (typedDataRow.RowState == DataRowState.Deleted) id = (s

aspnet-asp.net实现对xmldtd文件的增删改

问题描述 asp.net实现对xmldtd文件的增删改 为什么我在后台代码中引用的时候说我实体没法用?还有就是怎么把xml的dtd的内容和第一行也显示出来呢???求助!!!非常感谢!!!1 xml文件如下: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE classlist [ <!ELEMENT classlist (class*)> <!ELEMENT class (class

DataTable对象的使用

DataTable表示内存中的一个数据表,而非数据库中的表.在持久化到数据库之前,DataTable的任何变化是不会影响数据库的. 持久化到数据库可以使用dataAdapter.Update的方法. DataTable对象包括: 1.多个DataColumn对象 2.多个DataRow对象. 首先要创建DataTable对象 DataTable table1=New DataTable() : 向DataTable对象中添加列对象 DataColumn colUserID = new DataC

获得一个DataTable中的奇数行和偶数行

   DataTable dt = GetData();   int count = dt.Rows.Count;    DataTable dt_jishu = new DataTable();   DataTable dt_oushu = new DataTable();   dt_jishu = dt.Copy();   dt_oushu = dt.Copy();  for(int i = 1; i <= count/2; i++)   dt_jishu.Rows.RemoveAt(i);

给DataGrid加上右键菜单

datagrid|菜单 代码如下: Dim fileName As StringDim MyXmlDataSet As New DataSetfileName = "sunhai.xml"MyXmlDataSet.ReadXml(fileName)Form1.DefInstance.DataGrid1.DataSource = MyXmlDataSet 启动程序,DataTable默认是闭合的,需要手动点击展开,不胜其烦,用如下代码实现自动展开DataTable: Private Su

ADO.NET学习笔记(三)

ado|笔记 (由于书上的代码全是用C#写的,转换为VB.NET实在麻烦,以后就不转换了,见谅)五.操纵dataset在DataSet中DataRow是其所有数据的基本存放位置,它主要是由一个值数组组成,代表DataTable单独一行.DataRow中主要包括一下几种信息:1.行中每一列的当前值,2.行中每一列的原始值,3.行状态,4.父行与子行间的链接 初始化一个DataRow:DataTable dataTable=dataSet.Tables[0];DataRow newRow=dataT

《用C#和数据库实现无限级分类法》修正程序

程序|数据|数据库 上次写了这篇文章后,马上发觉有个错误,即可能存在Node漏加的情况.因在添加节点时,只有一个循环,当添加节点时,可能父节点还没有添加,即找不到父亲了,这就引起漏加.真对不起,没有慎重.不过俺平常就是很随便的,一件事没想成熟就去做,但发现错了,一定会订正的.如果你不喜欢我这样,就把文章扔在一边吧. 原来程序: /// <summary> /// 重设商品分类的 TreeView /// ResetSortView() 函数 /// </summary> #regi

viewstate和datatable动态录入数据示例

 这篇文章主要介绍了viewstate和datatable动态录入数据示例,需要的朋友可以参考下    代码如下: <%@ Page Language="C#" EnableViewState="true" %> <%@ Import Namespace="System.Data" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//E