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)
{
//....
}
把你那段代码包起来 --------------------编程问答-------------------- --------------------编程问答-------------------- 试过IsPostBack没效果~~ --------------------编程问答--------------------
又来一群说用什么IsPostBack避免重复提交的...... --------------------编程问答-------------------- tatic string test = "<table>";把他放在page_load里应该就可以了 --------------------编程问答-------------------- ds.Clear(); ?
--------------------编程问答-------------------- 把ds用viewstate或Session保存,在判断这个是否为空来创建Table --------------------编程问答--------------------
--------------------编程问答-------------------- da.Fill(ds);//将da获取的值,传送到ds,
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>";
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>"; --------------------编程问答--------------------
厉害!!!! 佩服佩服!!
http://blog.csdn.net/Airch/archive/2011/04/28/6370010.aspx --------------------编程问答-------------------- static string test = "<table>";
当然重复了....
补充:.NET技术 , ASP.NET