如何点击按钮弹出新窗口,输入数据后返回并刷新页面?(转自孟子E章)

在一些.NET论坛中有人经常会问:如何在页面中点击按钮打开新页面,输入数据,然后返回到初始页面并进行更新?要解决这个问题,应该弄清楚window.showModalDialog()的用法,本人在http://www.csdn.net/Develop/read_article.asp?id=15113已经做过介绍。下面就用例子介绍如何在ASP.NET中实现这个功能。

本例子共3个页面,其中WebForm2.aspx是过渡页面,是为了防止提交时打开新页面。

WebForm1.aspx

  <%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="ShowModalDialog.WebForm1" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <title>WebForm1</title> <meta content="Microsoft Visual Studio .NET 7.0" name="GENERATOR"> <meta content="Visual Basic 7.0" name="CODE_LANGUAGE"> <meta content="JavaScript" name="vs_defaultClientScript"> <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema"> </HEAD> <body MS_POSITIONING="GridLayout"> <div align="center"> <form id="Form1" method="post" runat="server"> <asp:label id="Label1" runat="server" Font-Bold="true"> 从当前页面打开新窗口,并把变量传递到新窗口的例子,可以多次打开提交。 </asp:label><br> <br> <asp:textbox id="TextBox1" runat="server" Width="600px">这是初始值,将被传递到新窗口。</asp:textbox><br> <br> <asp:button id="Button1" runat="server" Text="打开窗口" Width="96px"></asp:button></form> </div> </body> </HTML> 

WebForm1.aspx.vb

  Public Class WebForm1 Inherits System.Web.UI.Page Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox Protected WithEvents Form1 As System.Web.UI.HtmlControls.HtmlForm Protected WithEvents Label1 As System.Web.UI.WebControls.Label Protected WithEvents Button1 As System.Web.UI.WebControls.Button #Region " Web 窗体设计器生成的代码 " '该调用是 Web 窗体设计器所必需的。 <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() 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 (Not IsClientScriptBlockRegistered("clientScript")) Then Dim strScript As String = "<script>" + vbCrLf strScript += "function OpenWin(){" + vbCrLf strScript += "var str=window.showModalDialog('WebForm2.aspx',document.Form1.TextBox1.value)" + vbCrLf strScript += "if(str!=null) document.Form1.TextBox1.value=str" + vbCrLf strScript += "}" + vbCrLf strScript += "</script>" + vbCrLf RegisterClientScriptBlock("clientScript", strScript) End If Button1.Attributes.Add("onclick", "OpenWin()") End Sub End Class 

WebForm2.aspx

  <%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm2.aspx.vb" Inherits="aspxWeb.mengxianhui.com.WebForm2"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <title>WebForm2</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"> </HEAD> <frameset rows="0,*"> <frame src="about:blank"> <frame src="WebForm3.aspx"> </frameset> </HTML> 

WebForm2.aspx.vb

  Public Class WebForm2 Inherits System.Web.UI.Page #Region " Web 窗体设计器生成的代码 " '该调用是 Web 窗体设计器所必需的。 <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() 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 '在此处放置初始化页的用户代码 End Sub End Class 

WebForm3.aspx

  <%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm3.aspx.vb" Inherits="ShowModalDialog.WebForm3" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <title>WebForm3</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"> </HEAD> <body MS_POSITIONING="GridLayout" id="MyBody" runat="server"> <form id="Form1" method="post" runat="server"> <asp:Label id="Label1" runat="server">请输入您的大名:</asp:Label><br> <br> <asp:TextBox id="TextBox1" runat="server" Width="558"></asp:TextBox><br> <br> <asp:Button id="Button1" runat="server" Text=" 提 交 "></asp:Button> </form> </body> </HTML> 

WebForm3.aspx.vb

  Public Class WebForm3 Inherits System.Web.UI.Page Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox Protected WithEvents Label1 As System.Web.UI.WebControls.Label Protected WithEvents Button1 As System.Web.UI.WebControls.Button Protected MyBody As System.Web.UI.HtmlControls.HtmlControl #Region " Web 窗体设计器生成的代码 " '该调用是 Web 窗体设计器所必需的。 <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() 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 strScript As String = "<script>" + vbCrLf strScript += "window.parent.returnValue='" + TextBox1.Text.Replace("'", "/'") + "'" + vbCrLf strScript += "window.parent.close()" + vbCrLf strScript += "</script>" + vbCrLf If (Not IsClientScriptBlockRegistered("clientScript")) Then RegisterClientScriptBlock("clientScript", strScript) End If End If If Not IsPostBack Then MyBody.Attributes.Add("onload", "document.Form1.TextBox1.value=window.parent.dialogArguments") End If End Sub End Class 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的表结构和数据示例,供您参考: 1. 用户表 ```sql CREATE TABLE users ( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(30) NOT NULL UNIQUE, password VARCHAR(50) NOT NULL, realname VARCHAR(50), reg_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, contact VARCHAR(50), birthdate DATE, college VARCHAR(100), user_type ENUM('student', 'teacher', 'admin') DEFAULT 'student' ); INSERT INTO users (username, password, realname, contact, birthdate, college, user_type) VALUES ('zhangsan', '123456', '张三', '[email protected]', '1998-01-01', '北京大学', 'student'), ('lisi', 'abcdef', '李四', '[email protected]', '1997-05-15', '清华大学', 'teacher'), ('admin', 'admin', '管理员', '[email protected]', '1990-01-01', '', 'admin'); ``` 2. 题目表 ```sql CREATE TABLE questions ( id INT PRIMARY KEY AUTO_INCREMENT, question TEXT NOT NULL, option_a TEXT, option_b TEXT, option_c TEXT, option_d TEXT, answer CHAR(1) NOT NULL, qtype ENUM('single_choice', 'multiple_choice', 'fill_in', 'true_false') DEFAULT 'single_choice', add_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, category VARCHAR(50), difficulty ENUM('easy', 'medium', 'hard') DEFAULT 'easy' ); INSERT INTO questions (question, option_a, option_b, option_c, option_d, answer, qtype, category, difficulty) VALUES ('静夜思的作者是谁?', '李白', '杜甫', '白居易', '王之涣', 'A', 'single_choice', '唐诗', 'easy'), ('苏轼的号是什么?', '苏洵', '苏辙', '苏轼', '苏东坡', 'D', '古文', 'medium'), ('“天净沙·秋思”是哪位诗人的作品?', '辛弃疾', '李清照', '唐婉', '纳兰性德', 'A', '宋词', 'hard'), ('《论语》的作者是谁?', '孔子', '孟子', '荀子', '老子', 'A', '古文', 'easy'), ('“千里之堤毁于蚁穴”出自哪本书?', '《庄子》', '《论语》', '《史记》', '《孟子》', 'C', '古文', 'medium'); ``` 3. 套题表 ```sql CREATE TABLE exams ( id INT PRIMARY KEY AUTO_INCREMENT, exam_name VARCHAR(100) NOT NULL, exam_type ENUM('practice', 'competition') DEFAULT 'practice', questions TEXT NOT NULL, scores TEXT NOT NULL, create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); INSERT INTO exams (exam_name, exam_type, questions, scores) VALUES ('唐诗练习题', 'practice', '1,3', '10,20'), ('宋词竞赛题', 'competition', '3,5', '20,30'); ``` 4. 用户答题记录表 ```sql CREATE TABLE records ( id INT PRIMARY KEY AUTO_INCREMENT, user_id INT NOT NULL, exam_id INT NOT NULL, start_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, end_time TIMESTAMP, answers TEXT NOT NULL, scores TEXT NOT NULL, FOREIGN KEY (user_id) REFERENCES users(id), FOREIGN KEY (exam_id) REFERENCES exams(id) ); INSERT INTO records (user_id, exam_id, answers, scores) VALUES (1, 1, 'A,C,B,D,A', '8,10'), (1, 2, 'C,B,C,A,B', '15,20'), (2, 2, 'A,D,B,C,B', '18,20'); ``` 以上是一个简单的数据库应用系统的表结构和数据示例,仅供参考。您可以根据实际需求进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值