当前位置:编程学习 > C#/ASP.NET >>

asp.net刷新页面数据重复显示

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<html>
<head>
<script language="C#" runat="server">
    static string test = "<table>";
    void Page_Load(Object sender,EventArgs e)
    {              
        string s = Request.QueryString["id"];
        OleDbConnection cn = new OleDbConnection();
        cn.ConnectionString = "Provider=Microsoft.Jet.OleDb.4.0;" + "Data Source=" + Server.MapPath("./db1.mdb");
        cn.Open();//这里是打开的数据库连接
        String StrSql = "select * from goodsinfo where id=" + s;//对数据库进行的查询操作
        OleDbDataAdapter da = new OleDbDataAdapter(StrSql,cn);
        DataSet ds = new DataSet();//声明一个新的DataSet对象
        da.Fill(ds);//将da获取的值,传送到ds,
        test += "<tr><td><img height=100 width=100 src=" + ds.Tables[0].Rows[0][6].ToString() + "/></td><td>¥" + ds.Tables[0].Rows[0][2].ToString() + "</td><td>" + ds.Tables[0].Rows[0][1].ToString() + "</td></tr>";
        cn.Close();//在这里关闭了数据库的连接。
        test += "</Table>";
    }
</script>
</head>
<body>
<form runat="server">
<%=test %>
</form>
</body>
</html>

这是代码段
上一页在URL后传递了一个id的值。
当调试的时候,页面正确的显示,显示出数据库中的相应信息,但是当我刷新页面之后
发现数据重复出现。也就是说上一页的数据依然存在,然后页面又重新从数据库中读取了数据。
实在是不明白为什么~~
当时觉得可能是缓存的问题。求解。谢 --------------------编程问答-------------------- 刷新的时候重新提交了一遍。。。
不是缓存放入问题。
你这代码写的,脚本嵌在页面里。真够行的。 --------------------编程问答-------------------- 刷新的时候重新提交了一遍。。。 --------------------编程问答--------------------

if (!IsPostBack)
{
 //....
}
--------------------编程问答--------------------
引用 3 楼 wtj2832 的回复:
C# code

if (!IsPostBack)
{
 //....
}


把你那段代码包起来 --------------------编程问答-------------------- --------------------编程问答-------------------- 试过IsPostBack没效果~~ --------------------编程问答--------------------
又来一群说用什么IsPostBack避免重复提交的...... --------------------编程问答-------------------- tatic string test = "<table>";把他放在page_load里应该就可以了 --------------------编程问答-------------------- ds.Clear(); ?
--------------------编程问答-------------------- 把ds用viewstate或Session保存,在判断这个是否为空来创建Table --------------------编程问答--------------------

 da.Fill(ds);//将da获取的值,传送到ds,
  test = "<Table>";
  test += "<tr><td><img height=100 width=100 src=" + ds.Tables[0].Rows[0][6].ToString() + "/></td><td>¥" + ds.Tables[0].Rows[0][2].ToString() + "</td><td>" + ds.Tables[0].Rows[0][1].ToString() + "</td></tr>";
  cn.Close();//在这里关闭了数据库的连接。
  test += "</Table>";
--------------------编程问答--------------------  da.Fill(ds);//将da获取的值,传送到ds,
  test = "<Table>";
  test += "<tr><td><img height=100 width=100 src=" + ds.Tables[0].Rows[0][6].ToString() + "/></td><td>¥" + ds.Tables[0].Rows[0][2].ToString() + "</td><td>" + ds.Tables[0].Rows[0][1].ToString() + "</td></tr>";
  cn.Close();//在这里关闭了数据库的连接。
  test += "</Table>"; --------------------编程问答-------------------- IsPostBack 根本就没用 --------------------编程问答-------------------- 每次刷新的时候  删除表中内容```````然后再添加   我是这么做的 --------------------编程问答-------------------- da.Fill(ds);//将da获取的值,传送到ds,
ds.Clear();
ds.Dispose();

试试加上这两句 --------------------编程问答-------------------- 很明显就是test值的问题............   每次Load    test都要+="........";

你可以刷新一下  看看页面源代码 是不是 刷了几次 源代码尾部就多了几个 </Table> 标签 ........... --------------------编程问答-------------------- 说错了   是刷新几次页面源代码中就多了几天</Table> 标签  不一定在最后...

你可以把 这个   test += "</Table>"; 改成   test += "</Table><br/><hr style="color:Red" />";


看是不是 刷新一次就多了一条红线.. 如果是 就在每次test+=前  初始化一下 test="<Table>"; --------------------编程问答--------------------
引用 14 楼 lanqiang456 的回复:
每次刷新的时候 删除表中内容```````然后再添加 我是这么做的

厉害!!!! 佩服佩服!!
http://blog.csdn.net/Airch/archive/2011/04/28/6370010.aspx --------------------编程问答-------------------- static string test = "<table>";

当然重复了....

补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,