1、各位在显示一个表的数据的时间用的哪个(您为什么要用这个?)
我用过DataList Repeater 及
<% for (int i=0; i < dt.Rows.Count; i++) { %>
<tr align="center">
<td><%= i+1 %></td>
<td><% = dt.Rows[i]["OrderID"]%></td>
<td><% = dt.Rows[i]["productModel"]%></td>
</tr>
<%}%>这三种,发现都有美中不足的感觉,列如第三种,速度N快,在被次操作(回传)之后都要为DataTable 赋值.
想请教一种稍为方便一点且快一点的方法。
2、我在用以上三种显示数据并用AspNetPager 分页时,例如:我当前翻到了第8页,删除了一行记录后,又回到了第一页。(我比喜欢记他传到另一页去操作,例:删除 href="abc_edit.aspx?action=del&id=100", 当然在当前页也可以)请各位指点一二,删除后停在原页,但要求看不到已删除的那个项(也就是说要更新)注:ajax 的方法不要 (并非抵制)
我用过DataList Repeater 及
<% for (int i=0; i < dt.Rows.Count; i++) { %>
<tr align="center">
<td><%= i+1 %></td>
<td><% = dt.Rows[i]["OrderID"]%></td>
<td><% = dt.Rows[i]["productModel"]%></td>
</tr>
<%}%>这三种,发现都有美中不足的感觉,列如第三种,速度N快,在被次操作(回传)之后都要为DataTable 赋值.
想请教一种稍为方便一点且快一点的方法。
2、我在用以上三种显示数据并用AspNetPager 分页时,例如:我当前翻到了第8页,删除了一行记录后,又回到了第一页。(我比喜欢记他传到另一页去操作,例:删除 href="abc_edit.aspx?action=del&id=100", 当然在当前页也可以)请各位指点一二,删除后停在原页,但要求看不到已删除的那个项(也就是说要更新)注:ajax 的方法不要 (并非抵制)
2.代码绑定的gridview在第二页删除一条记录后,刷新后还是停在第二页。
2. 删除操作完成后如果用分页,则给其传一个删除前当前页的参数,然后重新绑定数据
2.你的bind()方法,本来就应该存有当前页的值,所以你删除后执行bind()理应是这一页.
例如:
gridview gv1;
gv1.datasource=objs;
gv1.databind();如果仅仅是显示数据,并且要执行W3c标准输出Html代码的话,就自己写绑定对象集的方法,并输出。
比如:
stringbulider sb = new stringbulider ();
foreach(object obj in objs)
{
sb.append("<li>");
sb.append(obj.attribute);
sb.append("</li>");
}
return sb.tostring();*另
对于页面回传后,要重新绑定的数据,可以使用服务器的缓存机制。如cache等来缓存常用的数据,下次回传页面时,不用访问数据库直接就可以绑定。对于数据量比较大,用户数比较多的系统,可以采用将常用数据(比如菜单列表)以xml形式保存在服务器端,一个用户一个文件夹的私人数据,或者session序列化数据。下次访问次直接读取。
关于删除数据后,还保持在当前页面这个操作,需要一些要对来说算是复杂的算法了。
删除后,你要计算删除当前选中的项后,当前页面是否还存在。如果不存在,你要向前跳一页。如果是多人并行系统,如果删除的项是复选项,还有可能要向前跳多页。并且你还要计算是否在删除的时候,是否别人也添加了数据,是否会向后跳一页或者多页等等。
汗啊。
直接使用gridview或者datalist等服务器控件,我这里没有说使用rp,因为那个单词不记得咋打了。呵呵。其实使用REPEATER也不错的。相对前两者来说,代码冗余也最少,因为输出的代码都是自己写的嘛。呵呵
gridview功能比较多,看需要咯
我觉得这三个都蛮好用的,删除的时候重新绑定的时候把当前页面的页码传过去绑定 ,不就在当前页了嘛!
或用request.referer获取请求页面,
在删除事件完成后加入response.redirect导向那一页面.