注册 登录
编程论坛 ASP.NET技术论坛

为何更新数据后,刷新才可以显示数据呢?

zsf2006 发布于 2007-05-21 11:53, 1064 次点击

页面代码如下:
<%@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,可是我发现数据并没有更新,只有刷新后才显示更新后的数据,这是为什么啊
我想跳转后就可以直接看到更新的数据,该怎么改呢?

7 回复
#2
Kendy1234562007-05-21 11:58
要看你datalist.aspx是怎么设计的了

是不是你把刷新数据库的代码写到 load事件的Ispostback里面了
#3
zsf20062007-05-21 12:39

我是个初学者,不是很懂,以下是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>
在这个页面里我该如何修改呢,请斑竹帮忙啊

#4
zcl19802007-05-21 13:51
要判断页面是不是第一次加载吧,在pageload开始加上 if(!page.ispostback)
#5
zsf20062007-05-21 14:14
我加过了,可是还是要刷新才可以看到更新后的数据
真郁闷啊
#6
头发抓没了2007-06-07 20:09
数据更新确实要刷新才能显示,你可以加上Ajax效果,放一个Updatapanel看看!
#7
川流不息2007-06-08 08:36

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

#8
fqbnet20082007-06-08 10:36
以下是引用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;%> 就是让页面立即过期的意思,这样就可以重新从数据库中读取数据,而不会从缓存中读取,就不用你手工刷新了 。

1