当前位置:首页 > 行业动态 > 正文

关于ASP.NET弹出窗口返回值的疑问标题,ASP.NET弹出窗口如何传递返回值?

在ASP.NET中,弹出窗口返回值通常通过JavaScript与服务器端代码交互实现。

ASP.NET中,弹出窗口并获取返回值的实现通常涉及前端JavaScript和后端代码的协同工作,以下是详细的步骤和示例代码:

一、前端页面(假设为Page.aspx)

1、HTML部分:包含用于显示返回值的文本框和一个按钮,按钮点击时触发弹出窗口操作。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>主页面</title>
    <script type="text/javascript">
        function Pop() {
            var result = showModalDialog('downs.aspx', 'subpage', 'dialogWidth:400px;dialogHeight:300px;center:yes;help:no;resizable:no;status:no'); //打开模态子窗体,并获取返回值
            if (result != null) {
                document.getElementById("txt_id").value = result.split("|&|")[0]; //返回值分别赋值给相关文本框
                document.getElementById("txt_name").value = result.split("|&|")[1];
                document.getElementById("txt_pwd").value = result.split("|&|")[2];
            }
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:TextBox ID="txt_id" runat="server"></asp:TextBox>
            <asp:TextBox ID="txt_name" runat="server"></asp:TextBox>
            <asp:TextBox ID="txt_pwd" runat="server"></asp:TextBox>
            <br />
            <asp:Button ID="btnPop" runat="server" Text="弹出窗口" OnClientClick="Pop()" />
        </div>
    </form>
</body>
</html>

2、说明:在上述代码中,showModalDialog函数用于打开弹出窗口downs.aspx,并在其关闭后获取返回值,返回值通过特定的分隔符(如“|&|”)进行分割,然后分别赋值给三个文本框。

二、弹出窗口页面(downs.aspx)

1、HTML部分:包含一个GridView控件用于展示数据,以及一个隐藏的按钮用于触发返回值设置。

关于ASP.NET弹出窗口返回值的疑问标题,ASP.NET弹出窗口如何传递返回值?

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>弹出窗口页面</title>
    <script type="text/javascript">
        function SetReturnValue(infor_id, infor_name, infor_psw) {
            window.returnValue = infor_id + "|&|" + infor_name + "|&|" + infor_psw; //设置返回值
            window.close(); //关闭窗口
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:GridView ID="gvshow" runat="server" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="3" OnRowDataBound="gvshow_RowDataBound">
                <FooterStyle BackColor="White" ForeColor="#000066" />
                <RowStyle ForeColor="#000066" />
                <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
                <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
                <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
            </asp:GridView>
        </div>
        <asp:Button ID="btnSetReturn" runat="server" Text="设置返回值" OnClientClick="SetReturnValue('123', '测试名称', '测试密码')" Style="display:none;" />
    </form>
</body>
</html>

2、说明:在GridView的行数据绑定事件(gvshow_RowDataBound)中,为每一行添加点击事件,当用户点击某一行时,触发SetReturnValue函数设置返回值并关闭窗口,这里的SetReturnValue函数是客户端JavaScript函数,用于设置window.returnValue并关闭窗口。

三、弹出窗口后台代码(downs.aspx.cs)

1、C#代码部分:用于绑定数据到GridView控件。

关于ASP.NET弹出窗口返回值的疑问标题,ASP.NET弹出窗口如何传递返回值?

using System;
using System.Data;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class downs : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            SetBind();
        }
    }
    private void SetBind()
    {
        string ConnString = "server=.;uid=sa;pwd=yourpassword;database=Northwind"; //根据实际情况修改连接字符串
        using (SqlConnection conn = new SqlConnection(ConnString))
        {
            conn.Open();
            string sql = "SELECT top 10 OrderId as infor_id, CustomerId as infor_name, EmployeeID as infor_psw FROM Orders"; //根据实际情况修改SQL语句
            SqlDataAdapter ada = new SqlDataAdapter(sql, conn);
            DataSet ds = new DataSet();
            ada.Fill(ds);
            gvshow.DataSource = ds.Tables[0];
            this.gvshow.DataBind();
        }
    }
}

2、说明:在Page_Load事件中判断是否为首次加载页面,如果是则调用SetBind方法从数据库中获取数据并绑定到GridView控件,这里的数据库连接字符串和SQL语句需要根据实际情况进行修改。

四、FAQs(常见问题解答)

1、:为什么弹出窗口关闭后无法获取返回值?

:可能有以下原因:一是弹出窗口中没有正确设置window.returnValue;二是主页面中的JavaScript代码没有正确处理弹出窗口的返回值;三是浏览器兼容性问题导致showModalDialogwindow.open方法行为不一致,请检查弹出窗口和主页面的代码逻辑是否正确,并确保在不同浏览器中进行测试。

关于ASP.NET弹出窗口返回值的疑问标题,ASP.NET弹出窗口如何传递返回值?

2、:如何在弹出窗口中传递多个参数给主页面?

:可以通过将多个参数拼接成一个字符串(使用特定的分隔符),然后设置给window.returnValue,主页面再通过分割字符串的方式获取各个参数值,也可以使用JSON格式来传递复杂类型的数据。