修改后的数据如何自动刷新?

griefforyou 2004-08-10 11:44:03
有下面的程序,可以更新某条数据,可是更新以后要右键页面,点“刷新”才能显示修改完的数据,怎么办?


WebForm1.aspx

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="yc.WebForm1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.0">
<meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<style type="text/css">
table {font-size:9pt;}
td {font-size:9pt;border:dotted 1px;}
</style>
</HEAD>
<body MS_POSITIONING="FlowLayout">
<form id="Form1" method="post" runat="server" action="WebForm1.aspx">
<div id="table1" runat="server" style="font-size:9pt"></div>
</form>
</body>
</HTML>

WebForm1.aspx.vb

Public Class WebForm1
Inherits System.Web.UI.Page
Protected WithEvents Conn As System.Data.OleDb.OleDbConnection
Protected WithEvents Cmd As System.Data.OleDb.OleDbDataAdapter
Protected WithEvents table1 As System.Web.UI.HtmlControls.HtmlGenericControl
Protected WithEvents DataSet1 As System.Data.DataSet

#Region " Web 窗体设计器生成的代码 "

'该调用是 Web 窗体设计器所必需的。
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.Conn = New System.Data.OleDb.OleDbConnection()
Me.Conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Inetpub\wwwroot\MYDB.MDB"
Me.Conn.Open()

Me.Cmd = New System.Data.OleDb.OleDbDataAdapter()
Cmd.SelectCommand = New System.Data.OleDb.OleDbCommand("select * from mytable", Conn)
End Sub

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
'不要使用代码编辑器修改它。
InitializeComponent()
End Sub

#End Region

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
If IsPostBack() Then '提交修改
Dim EditID As Integer
Dim TB_Field, FieldName As String
Dim UpdateSQL As String
EditID = Request.Form("EditID")
UpdateSQL = "update mytable set "
For Each TB_Field In Request.Form
If Left(TB_Field.ToString(), 3) = "TB_" Then
FieldName = Mid(TB_Field.ToString(), 4)
UpdateSQL += FieldName & "='" & Replace(Request.Form(TB_Field.ToString()), "'", "''") & "',"
End If
Next
If Right(UpdateSQL, 1) = "," Then UpdateSQL = Left(UpdateSQL, Len(UpdateSQL) - 1)
UpdateSQL += " where id=" & EditID
Cmd.UpdateCommand = New OleDb.OleDbCommand(UpdateSQL, Conn)
Cmd.UpdateCommand.ExecuteNonQuery()
Response.Redirect("WebForm1.aspx")
Else '显示数据
Dim DS As New System.Data.DataSet()
Response.Expires = 0
Cmd.Fill(DS, "myTable")

Dim i, j As Integer
Dim tempid As Integer
Dim FormStr As String

ID = CInt(Request.QueryString("id"))

FormStr = "<table border=0 cellspacing=0 cellpadding=2><tr bgcolor='#DEDEDE'>" & vbNewLine

For i = 0 To DS.Tables(0).Columns.Count - 1
FormStr += "<td>" & DS.Tables(0).Columns(i).Caption & "</td>" & vbNewLine
Next

FormStr += "<td>操作</td></tr>" & vbNewLine
For i = 0 To DS.Tables("mytable").Rows.Count - 1
FormStr += "<tr>" & vbNewLine
tempid = DS.Tables("mytable").Rows(i).Item("id")
If ID = tempid Then
For j = 0 To DS.Tables("mytable").Columns.Count - 1
If j = 0 Or j = 10 Then
FormStr += "<td>" & DS.Tables("mytable").Rows(i).Item(j) & "</td>" & vbNewLine
Else
FormStr += "<td><input type=text size=10 name='TB_" & DS.Tables("mytable").Columns(j).Caption & "' value='" & DS.Tables("mytable").Rows(i).Item(j) & "'></td>" & vbNewLine
End If
Next
FormStr += "<td><input type=submit name=submit value='提交'></td></tr>" & vbNewLine
RegisterHiddenField("EditID", ID)
Else
For j = 0 To DS.Tables("mytable").Columns.Count - 1
FormStr += "<td>" & DS.Tables("mytable").Rows(i).Item(j) & "</td>" & vbNewLine
Next
FormStr += "<td><a href='WebForm1.aspx?action=edit&id=" & tempid & "'>修改</a></td></tr>" & vbNewLine
End If
Next
FormStr += "</table>" & vbNewLine
table1.InnerHtml = FormStr
End If
End Sub
End Class
...全文
380 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
griefforyou 2004-08-11
  • 打赏
  • 举报
回复
OK..
ccwq 2004-08-11
  • 打赏
  • 举报
回复
修改以后,再手工赋于新值一次,不然的话,因为EnabledViewState会自动保持页面的状态,所以就无法自动更新数据,请楼主以后直接说问题所在的关键,而不是贴一大堆代码,看得眼睛好花,也好累
你把以下这一段代码写入一个方法中去(如:DataBinds()),然后在更新以后调用
private sub DataBinds()

      Dim DS As New System.Data.DataSet()
Response.Expires = 0
Cmd.Fill(DS, "myTable")

Dim i, j As Integer
Dim tempid As Integer
Dim FormStr As String

ID = CInt(Request.QueryString("id"))

FormStr = "<table border=0 cellspacing=0 cellpadding=2><tr bgcolor='#DEDEDE'>" & vbNewLine

For i = 0 To DS.Tables(0).Columns.Count - 1
FormStr += "<td>" & DS.Tables(0).Columns(i).Caption & "</td>" & vbNewLine
Next

FormStr += "<td>操作</td></tr>" & vbNewLine
For i = 0 To DS.Tables("mytable").Rows.Count - 1
FormStr += "<tr>" & vbNewLine
tempid = DS.Tables("mytable").Rows(i).Item("id")
If ID = tempid Then
For j = 0 To DS.Tables("mytable").Columns.Count - 1
If j = 0 Or j = 10 Then
FormStr += "<td>" & DS.Tables("mytable").Rows(i).Item(j) & "</td>" & vbNewLine
Else
FormStr += "<td><input type=text size=10 name='TB_" & DS.Tables("mytable").Columns(j).Caption & "' value='" & DS.Tables("mytable").Rows(i).Item(j) & "'></td>" & vbNewLine
End If
Next
FormStr += "<td><input type=submit name=submit value='提交'></td></tr>" & vbNewLine
RegisterHiddenField("EditID", ID)
Else
For j = 0 To DS.Tables("mytable").Columns.Count - 1
FormStr += "<td>" & DS.Tables("mytable").Rows(i).Item(j) & "</td>" & vbNewLine
Next
FormStr += "<td><a href='WebForm1.aspx?action=edit&id=" & tempid & "'>修改</a></td></tr>" & vbNewLine
End If
Next
FormStr += "</table>" & vbNewLine
table1.InnerHtml = FormStr

End sub
然后你的.VB文件应该是:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
If IsPostBack() Then '提交修改
Dim EditID As Integer
Dim TB_Field, FieldName As String
Dim UpdateSQL As String
EditID = Request.Form("EditID")
UpdateSQL = "update mytable set "
For Each TB_Field In Request.Form
If Left(TB_Field.ToString(), 3) = "TB_" Then
FieldName = Mid(TB_Field.ToString(), 4)
UpdateSQL += FieldName & "='" & Replace(Request.Form(TB_Field.ToString()), "'", "''") & "',"
End If
Next
If Right(UpdateSQL, 1) = "," Then UpdateSQL = Left(UpdateSQL, Len(UpdateSQL) - 1)
UpdateSQL += " where id=" & EditID
Cmd.UpdateCommand = New OleDb.OleDbCommand(UpdateSQL, Conn)
Cmd.UpdateCommand.ExecuteNonQuery()
Response.Redirect("WebForm1.aspx")
Else '显示数据
DataBinds()
End If
End Sub
End Class



luoxp520 2004-08-11
  • 打赏
  • 举报
回复
只需要重新绑定
hunterzhi 2004-08-11
  • 打赏
  • 举报
回复
你更新后重新绑定数据
delphiseabird 2004-08-11
  • 打赏
  • 举报
回复
重新绑定一下
jonescheng 2004-08-11
  • 打赏
  • 举报
回复
你修改数据库后。你现在的页面的数据仍然是原始的,
你需要在次读取数据来刷新你的页面。。。
nnh 2004-08-11
  • 打赏
  • 举报
回复
呵呵,用了一個Response.Redirect("WebForm1.aspx")句子就可以解決問題了.

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧