利用 window.showModalDialog 一次返回多个值

2024-02-07 08:58

本文主要是介绍利用 window.showModalDialog 一次返回多个值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

       在实际的工作中,我们会遇到,一次,需要返回值,当然这个操作,也可以用多个DropDownList控件,进行多级联动,但这样,会使页面,经常地刷新,不太利于用户的观看。等等。 在利用window.showModalDialog()进行返回一个值得基础上,进行多个值得返回操作。
       在利用window.showModalDialog,方法,主要是利用返回一个数组,之后把数组里面的值取出来,进行赋值操作。
     以下是调用页面的HTML的代码:

<% @ Page Language="C#" AutoEventWireup="true" CodeFile="AddSecondHand.aspx.cs" StylesheetTheme="Default"
    Inherits
="Machine_AddSecondHand" 
%>

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
< html  xmlns ="http://www.w3.org/1999/xhtml" >
< head  runat ="server" >
    
< title > 添加拖车信息 </ title >

    
< script  language ="javascript"  type ="text/javascript" >
        
function getmachine()
    

        
var a=new Array(4
);
        
var a=window.showModalDialog("../Public/GetMachine.aspx",a,"center:yes;help:no;status:no;rsizable:yes"
);
        document.form1.txtProductCode.value
=a[0
];
        document.form1.txtMachineTypeCode.value
=a[1
];
        document.form1.txtMachineCode.value
=a[2
];
        document.form1.txtCustomerCode.value
=a[3
];
    }

    
</script>

</ head >
< body >
    
< form  id ="form1"  runat ="server" >
        
< fieldset >
            
< legend > 菜单 </ legend >
            
< div  id ="tabsF" >
                
< ul >
                    
< li >< href ="ListSecondHand.aspx"  title ="拖车管理" >< span > 拖车管理 </ span ></ a ></ li >
                    
< li >< href ="../Default.aspx"  title ="返回" >< span > 返回 </ span ></ a ></ li >
                
</ ul >
            
</ div >
        
</ fieldset >
        
< div  style ="text-align: center" >
            
< table  cellpadding ="4" >
                
< tr >
                    
< td  class ="tdbg"  align ="left" >
                        
< span  style ="color: #ff0000" > * </ span > 拖车编号: </ td >
                    
< td  align ="left" >
                        
< asp:TextBox  ID ="txtObligeCode"  runat ="server" ></ asp:TextBox >
                        
< asp:RequiredFieldValidator  ID ="RequiredFieldValidator1"  runat ="server"  ControlToValidate ="txtObligeCode"
                            ErrorMessage
="拖车编号不能为空" > * </ asp:RequiredFieldValidator ></ td >
                    
< td  class ="tdbg"  align ="left" >
                        
< span  style ="color: #ff0000" > * </ span > 拖车日期: </ td >
                    
< td  align ="left" >
                        
< asp:TextBox  ID ="txtObligeDate"  runat ="server" ></ asp:TextBox >
                        
< asp:RequiredFieldValidator  ID ="RequiredFieldValidator2"  runat ="server"  ControlToValidate ="txtObligeDate"
                            ErrorMessage
="拖车日期不能为空" > * </ asp:RequiredFieldValidator ></ td >
                
</ tr >
                
< tr  style ="font-size: small; font-family: 宋体, 仿宋_GB2312, Arial" >
                    
< td  class ="tdbg"  align ="left" >
                        
< span  style ="color: #ff0000" > * </ span > 产品名称: </ td >
                    
< td  align ="left" >
                        
< asp:TextBox  ID ="txtProductCode"  runat ="server" ></ asp:TextBox >
                        
<img src="../Images/folder_open.gif" onclick="getmachine()" />
                        
< asp:RequiredFieldValidator  ID ="RequiredFieldValidator4"  runat ="server"  ErrorMessage ="产品名称不能为空"
                            ControlToValidate
="txtProductCode" > * </ asp:RequiredFieldValidator ></ td >
                    
< td  align ="left" >
                    
</ td >
                    
< td  align ="left" >
                    
</ td >
                
</ tr >
                
< tr >
                    
< td  class ="tdbg"  align ="left" >
                        
< span  style ="color: #ff0000" > * </ span > 设备类型: </ td >
                    
< td  align ="left" >
                        
< asp:TextBox  ID ="txtMachineTypeCode"  runat ="server"   ></ asp:TextBox >
                        
< asp:RequiredFieldValidator  ID ="RequiredFieldValidator5"  runat ="server"  ControlToValidate ="txtMachineTypeCode"
                            ErrorMessage
="设备类型不能为空" > * </ asp:RequiredFieldValidator ></ td >
                    
< td  class ="tdbg"  align ="left" >
                        
< span  style ="color: #ff0000" > * </ span > 设备编号: </ td >
                    
< td  align ="left" >
                        
< asp:TextBox  ID ="txtMachineCode"  runat ="server"   ></ asp:TextBox >
                        
< asp:RequiredFieldValidator  ID ="RequiredFieldValidator6"  runat ="server"  ControlToValidate ="txtMachineCode"
                            ErrorMessage
="设备编号不能为空" > * </ asp:RequiredFieldValidator >
                    
</ td >
                
</ tr >
                
< tr >
                    
< td  class ="tdbg"  align ="left" >
                        客户名称:
</ td >
                    
< td  align ="left" >
                        
< asp:TextBox  ID ="txtCustomerCode"  runat ="server" ></ asp:TextBox >
                        
< asp:RequiredFieldValidator  ID ="RequiredFieldValidator3"  runat ="server"  ControlToValidate ="txtCustomerCode"
                            ErrorMessage
="客户名称不能为空" > * </ asp:RequiredFieldValidator ></ td >
                    
< td  align ="left" >
                    
</ td >
                    
< td  align ="left" >
                    
</ td >
                
</ tr >
                
< tr >
                    
< td  class ="tdbg"  align ="left" >
                        备注:
</ td >
                    
< td  colspan ="3"  align ="left" >
                        
< asp:TextBox  ID ="txtNote"  runat ="server"  TextMode ="MultiLine"  Height ="180px"  Width ="443px" ></ asp:TextBox ></ td >
                
</ tr >
                
< tr >
                    
< td  align ="center"  colspan ="4" >
                        
< asp:Button  ID ="btnSave"  runat ="server"  Text ="添加"  OnClick ="btnSave_Click"   />
                        
< asp:Button  ID ="btnClear"  runat ="server"  Text ="清除"  OnClick ="btnClear_Click"   /></ td >
                
</ tr >
            
</ table >
        
</ div >
        
< fieldset  style ="text-align: left" >
            
< legend > 业务逻辑 </ legend >
            
< ul >
                
< li > < span  style ="color: red" > * </ span > 项不能为空 </ li >
                
< li > 日期格式要正确
                    
                
</ li >
                
</ ul >
        
</ fieldset >
        
< asp:ValidationSummary  ID ="ValidationSummary1"  runat ="server"  ShowMessageBox ="True"
            ShowSummary
="False"   />
    
</ form >
</ body >
</ html >

        以上代码的粗体,是重点,其中GetMachine()方法,先定义一个数组,之后将数组的每个值,进行赋值,其中,在被调用的页面进行赋值操作。
       以下是被调用页面的HTML代码:

<% @ Page Language="C#" AutoEventWireup="true"  StylesheetTheme="Default" Theme="Default" CodeFile="GetMachine.aspx.cs" Inherits="Public_GetSecondHand"  %>

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >

< html  xmlns ="http://www.w3.org/1999/xhtml"   >
< head  runat ="server" >
    
< title > 选择二手车信息 </ title >
    
< base  target ="_self"   />     
</ head >
< body >
    
< form  id ="form1"  runat ="server" >
    
< div >
    
< fieldset >< legend > 车辆信息 </ legend >
        
< asp:GridView  ID ="gvSecondHand"  SkinID ="Default_GridView"   runat ="server"  OnRowDataBound ="gvSecondHand_RowDataBound"  OnSelectedIndexChanging ="gvSecondHand_SelectedIndexChanging"  OnDataBound ="gvSecondHand_DataBound" >
            
< Columns >
                
< asp:BoundField  DataField ="TypeName"  HeaderText ="产品名称"   />
                
< asp:BoundField  DataField ="DictName"  HeaderText ="产品类型"   />
                
< asp:BoundField  DataField ="MachineCode"  HeaderText ="整机编号"   />
                
< asp:BoundField  DataField ="CusName"  HeaderText ="客户名称"   />
                
< asp:BoundField  DataField ="NameCode"  HeaderText ="产品编号"   />
                
< asp:BoundField  DataField ="TypeCode"  HeaderText ="类型编号"   />
                
< asp:BoundField  DataField ="CusCode"  HeaderText ="客户编号"   />
                
< asp:CommandField  ShowSelectButton ="True"   />
            
</ Columns >
        
</ asp:GridView >
    
</ fieldset >
    
</ div >
    
</ form >
</ body >
</ html >

  被调用的页面,主要是由一个GridView控件,设置控件的数据源,我们主要是,需要将,产品编号、类型编号、整机编号、客户编号 进行返回。在HTML需要主要的,需要将<base target="_Self"/>添加到<head></head>里面,不然,会出现单击‘选择’,重新弹出一个空页面。不能达到我们需要的功能。
       以下是,此页面对应的后台页面代码:

using  System;
using  System.Data;
using  System.Configuration;
using  System.Collections;
using  System.Web;
using  System.Web.Security;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.Web.UI.WebControls.WebParts;
using  System.Web.UI.HtmlControls;

public   partial   class  Public_GetSecondHand : System.Web.UI.Page
{
    WebUtility.MachineOut secondHand;
    
protected void Page_Load(object sender, EventArgs e)
    
{
        
if (!Page.IsPostBack)
        
{
            secondHand 
= new WebUtility.MachineOut();
            
this.gvSecondHand.DataSource = secondHand.DataSetSecondHand();
            
this.gvSecondHand.DataBind();
        }

    }

    
protected void gvSecondHand_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
    
{
        
//返回值 分别是 产品编号,整机类型编号,整机编号,客户编号
        Response.Write("<script language=javascript> var s=Array(4);s[0]='" +
            
this.gvSecondHand.Rows[e.NewSelectedIndex].Cells[4].Text + "';" +
            
"s[1]='" + this.gvSecondHand.Rows[e.NewSelectedIndex].Cells[5].Text + "';s[2]='" +
            
this.gvSecondHand.Rows[e.NewSelectedIndex].Cells[2].Text +"';"+
            
"s[3]='" + this.gvSecondHand.Rows[e.NewSelectedIndex].Cells[6].Text + "';" +
            
"window.returnValue=s;window.close();</script>");
    }

    
protected void gvSecondHand_RowDataBound(object sender, GridViewRowEventArgs e)
    
{
        
if (e.Row.RowType == DataControlRowType.DataRow)
        
{
            e.Row.Cells[
4].Visible = false;
            e.Row.Cells[
5].Visible = false;
            e.Row.Cells[
6].Visible = false;

            e.Row.Attributes.Add(
"onmouseover""e=this.style.backgroundColor; this.style.backgroundColor='linen'");
            e.Row.Attributes.Add(
"onmouseout""this.style.backgroundColor=e");
        }

        
if (e.Row.RowType == DataControlRowType.Header)
        
{
            e.Row.Cells[
4].Visible = false;
            e.Row.Cells[
5].Visible = false;
            e.Row.Cells[
6].Visible = false;
        }


    }
   在后台编程需要主要的是,SelectedIndexChanging  事件,因为使用脚本返回我们需要的值,因此需要主要单引号,不要少了单引号,这个问题,在我调试的过程中,查了好半天,才搞定。
     到此,我们用window.showModalDialog 方法,返回多个值,就做好了,您可以根据您的实际需要,进行改动。

这篇关于利用 window.showModalDialog 一次返回多个值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/687203

相关文章

Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案

《Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案》:本文主要介绍Vue3组件中getCurrentInstance()获取App实例,但是返回nu... 目录vue3组件中getCurrentInstajavascriptnce()获取App实例,但是返回n

前端下载文件时如何后端返回的文件流一些常见方法

《前端下载文件时如何后端返回的文件流一些常见方法》:本文主要介绍前端下载文件时如何后端返回的文件流一些常见方法,包括使用Blob和URL.createObjectURL创建下载链接,以及处理带有C... 目录1. 使用 Blob 和 URL.createObjectURL 创建下载链接例子:使用 Blob

Python获取C++中返回的char*字段的两种思路

《Python获取C++中返回的char*字段的两种思路》有时候需要获取C++函数中返回来的不定长的char*字符串,本文小编为大家找到了两种解决问题的思路,感兴趣的小伙伴可以跟随小编一起学习一下... 有时候需要获取C++函数中返回来的不定长的char*字符串,目前我找到两种解决问题的思路,具体实现如下:

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

使用Sentinel自定义返回和实现区分来源方式

《使用Sentinel自定义返回和实现区分来源方式》:本文主要介绍使用Sentinel自定义返回和实现区分来源方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Sentinel自定义返回和实现区分来源1. 自定义错误返回2. 实现区分来源总结Sentinel自定

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

如何使用Python实现一个简单的window任务管理器

《如何使用Python实现一个简单的window任务管理器》这篇文章主要为大家详细介绍了如何使用Python实现一个简单的window任务管理器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 任务管理器效果图完整代码import tkinter as tkfrom tkinter i

基于Spring实现自定义错误信息返回详解

《基于Spring实现自定义错误信息返回详解》这篇文章主要为大家详细介绍了如何基于Spring实现自定义错误信息返回效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录背景目标实现产出背景Spring 提供了 @RestConChina编程trollerAdvice 用来实现 HTT

Python实现合并与拆分多个PDF文档中的指定页

《Python实现合并与拆分多个PDF文档中的指定页》这篇文章主要为大家详细介绍了如何使用Python实现将多个PDF文档中的指定页合并生成新的PDF以及拆分PDF,感兴趣的小伙伴可以参考一下... 安装所需要的库pip install PyPDF2 -i https://pypi.tuna.tsingh