| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1061 人关注过本帖
标题:为何更新数据后,刷新才可以显示数据呢?
只看楼主 加入收藏
zsf2006
Rank: 1
来 自:博客园
等 级:新手上路
威 望:1
帖 子:315
专家分:0
注 册:2006-6-3
结帖率:100%
收藏
 问题点数:0 回复次数:7 
为何更新数据后,刷新才可以显示数据呢?

页面代码如下:
<%@Import Namespace="System.Data"%>
<%@Import Namespace="System.Data.OleDb"%>
<%@ Page Language="C#" Debug="true" %>

<script language="C#" runat="server">
void Page_Load(Object sender, EventArgs e)
{
string strid;
strid=Request.QueryString["id"];
int id=Convert.ToInt32(strid);
string strsql;
strsql="select * from admin where adminid="+id;
string strConnection="Provider=Microsoft.Jet.OleDb.4.0;Data Source="+Server.MapPath("new.mdb");
OleDbConnection objConnection=new OleDbConnection(strConnection);
objConnection.Open();

OleDbCommand objCommand = new OleDbCommand(strsql,objConnection);

OleDbDataReader objDataReader=objCommand.ExecuteReader();
if (objDataReader.Read())
{
username.Text=Convert.ToString(objDataReader["username"]);
password.Text=Convert.ToString(objDataReader["password"]);
}
objDataReader.Close();
}
void but_click(Object sender, EventArgs e)
{
string strid;
strid=Request.QueryString["id"];
int id=Convert.ToInt32(strid);
string strsql;
string username=Request["username"];
string password=Request["password"];
strsql="update admin set username='"+username+"',[password]='"+password+"' where adminid="+id;

string strConnection="Provider=Microsoft.Jet.OleDb.4.0;Data Source="+Server.MapPath("new.mdb");
OleDbConnection objConnection=new OleDbConnection(strConnection);
OleDbCommand objCommand1 = new OleDbCommand(strsql,objConnection);
objConnection.Open();
objCommand1.ExecuteNonQuery();
Response.Redirect("data_list.aspx");
}
</script>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>用户编辑</title>
</head>
<body>
<form runat="server">

<table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC">
<tr bgcolor="#FFFFFF">
<td width="141" height="22" align="right">用户名:</td>
<td width="256"><asp:textbox runat="server" ID="username" /></td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="22" align="right">密 码:</td>
<td> <asp:textbox runat="server" ID="password" /></td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="22">&nbsp;</td>
<td><asp:button runat="server" OnClick="but_click" Text="更 新" ID="but"/></td>
</tr>
</table>
</form>
</body>
</html>
数据更新后跳转到data_list.aspx,可是我发现数据并没有更新,只有刷新后才显示更新后的数据,这是为什么啊
我想跳转后就可以直接看到更新的数据,该怎么改呢?

搜索更多相关主题的帖子: 数据 
2007-05-21 11:53
Kendy123456
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:62
帖 子:2720
专家分:0
注 册:2007-1-3
收藏
得分:0 
要看你datalist.aspx是怎么设计的了

是不是你把刷新数据库的代码写到 load事件的Ispostback里面了

2007-05-21 11:58
zsf2006
Rank: 1
来 自:博客园
等 级:新手上路
威 望:1
帖 子:315
专家分:0
注 册:2006-6-3
收藏
得分:0 

我是个初学者,不是很懂,以下是data_list.aspx的完整代码

<%@Import Namespace="System.Data"%>
<%@Import Namespace="System.Data.OleDb"%>
<script language="C#" runat="server">
void Page_Load(Object sender, EventArgs e)
{

string strConnection="Provider=Microsoft.Jet.OleDb.4.0;Data Source="+Server.MapPath("new.mdb");
OleDbConnection objConnection=new OleDbConnection(strConnection);
OleDbCommand objCommand1 = new OleDbCommand("select * from admin ",objConnection);
objConnection.Open();

dgrdMain.DataSource=objCommand1.ExecuteReader();//dgrdMain就是下面的DATAGRID的ID
dgrdMain.DataBind();
objConnection.Close();
}

</script>
<html>
<body>
<asp:DataGrid id="dgrdMain" cellpadding="1" Width="350" showheader="true" borderwidth="1" runat="server" AutoGenerateColumns="false" ItemStyle-HorizontalAlign="center" >
<columns >
<asp:BoundColumn HeaderText="编号" DataField="adminid" HeaderStyle-HorizontalAlign="center" HeaderStyle-Width="40px"/>
<asp:HyperLinkColumn
    HeaderText="用户名"
DataNavigateUrlField="adminid"
    DataNavigateUrlFormatString="details.aspx?id={0}"
    DataTextField="username"
    Target="_new"
HeaderStyle-HorizontalAlign="center"
HeaderStyle-Width="60px"
/>

<asp:BoundColumn HeaderText="密码" DataField="password" HeaderStyle-HorizontalAlign="center"/>
<asp:HyperLinkColumn
    HeaderText="编辑"
DataNavigateUrlField="adminid"
DataNavigateUrlFormatString="edit.aspx?id={0}"
    Text ="编辑"
HeaderStyle-HorizontalAlign ="center"
/>

<asp:HyperLinkColumn
    HeaderText="删除"
DataNavigateUrlField="adminid"
DataNavigateUrlFormatString="del.aspx?id={0}"
    Text ="删除"
Target="_new" SortExpression =""
HeaderStyle-HorizontalAlign ="center"
/>

<asp:HyperLinkColumn
    HeaderText="查看"
DataNavigateUrlField="adminid"
DataNavigateUrlFormatString="details.aspx?id={0}"
    Text ="查看"
Target="_new"
HeaderStyle-HorizontalAlign ="center"
/>
</columns>
</asp:DataGrid>

</body>
</html>
在这个页面里我该如何修改呢,请斑竹帮忙啊


光临我的博客:http://
2007-05-21 12:39
zcl1980
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-5-21
收藏
得分:0 
要判断页面是不是第一次加载吧,在pageload开始加上 if(!page.ispostback)
2007-05-21 13:51
zsf2006
Rank: 1
来 自:博客园
等 级:新手上路
威 望:1
帖 子:315
专家分:0
注 册:2006-6-3
收藏
得分:0 
我加过了,可是还是要刷新才可以看到更新后的数据
真郁闷啊

光临我的博客:http://
2007-05-21 14:14
头发抓没了
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-5-20
收藏
得分:0 
数据更新确实要刷新才能显示,你可以加上Ajax效果,放一个Updatapanel看看!

2007-06-07 20:09
川流不息
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2000
专家分:47
注 册:2006-11-8
收藏
得分:0 

你把數據查詢放在一個單獨的方法,在你第一次加載的時候調用這個方法,然後在你Update的時候,在最後再調用這一個方法,也就是重新查詢綁定,這樣的話,你就不用手動去刷新看新的數據了。


日月更替,天地輪回,人間已是幾回春。 江山不老,人正少年,只手能擎半邊天。
2007-06-08 08:36
fqbnet2008
Rank: 2
等 级:新手上路
威 望:4
帖 子:1020
专家分:0
注 册:2007-1-4
收藏
得分:0 
以下是引用zsf2006在2007-5-21 11:53:33的发言:

页面代码如下:
<%@Import Namespace="System.Data"%>
<%@Import Namespace="System.Data.OleDb"%>
<%@ Page Language="C#" Debug="true" %>

<script language="C#" runat="server">
void Page_Load(Object sender, EventArgs e)
{
string strid;
strid=Request.QueryString["id"];
int id=Convert.ToInt32(strid);
string strsql;
strsql="select * from admin where adminid="+id;
string strConnection="Provider=Microsoft.Jet.OleDb.4.0;Data Source="+Server.MapPath("new.mdb");
OleDbConnection objConnection=new OleDbConnection(strConnection);
objConnection.Open();

OleDbCommand objCommand = new OleDbCommand(strsql,objConnection);

OleDbDataReader objDataReader=objCommand.ExecuteReader();
if (objDataReader.Read())
{
username.Text=Convert.ToString(objDataReader["username"]);
password.Text=Convert.ToString(objDataReader["password"]);
}
objDataReader.Close();
}
void but_click(Object sender, EventArgs e)
{
string strid;
strid=Request.QueryString["id"];
int id=Convert.ToInt32(strid);
string strsql;
string username=Request["username"];
string password=Request["password"];
strsql="update admin set username='"+username+"',[password]='"+password+"' where adminid="+id;

string strConnection="Provider=Microsoft.Jet.OleDb.4.0;Data Source="+Server.MapPath("new.mdb");
OleDbConnection objConnection=new OleDbConnection(strConnection);
OleDbCommand objCommand1 = new OleDbCommand(strsql,objConnection);
objConnection.Open();
objCommand1.ExecuteNonQuery();

Response.Redirect("data_list.aspx");
}

Response.Redirect("data_list.aspx"); 之前把连接关闭了, 然后再data_list.aspx页面的<head>里面加上下面这句代码

<%Response.Expires =0;%> 就是让页面立即过期的意思,这样就可以重新从数据库中读取数据,而不会从缓存中读取,就不用你手工刷新了 。


雄关漫道真如铁,而今迈步从头越,从头越,苍山如海,残阳如血㊣♀★
2007-06-08 10:36
快速回复:为何更新数据后,刷新才可以显示数据呢?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017540 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved