利用 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

相关文章

SpringBoot中使用Flux实现流式返回的方法小结

《SpringBoot中使用Flux实现流式返回的方法小结》文章介绍流式返回(StreamingResponse)在SpringBoot中通过Flux实现,优势包括提升用户体验、降低内存消耗、支持长连... 目录背景流式返回的核心概念与优势1. 提升用户体验2. 降低内存消耗3. 支持长连接与实时通信在Sp

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

统一返回JsonResult踩坑的记录

《统一返回JsonResult踩坑的记录》:本文主要介绍统一返回JsonResult踩坑的记录,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录统一返回jsonResult踩坑定义了一个统一返回类在使用时,JsonResult没有get/set方法时响应总结统一返回

MyBatis设计SQL返回布尔值(Boolean)的常见方法

《MyBatis设计SQL返回布尔值(Boolean)的常见方法》这篇文章主要为大家详细介绍了MyBatis设计SQL返回布尔值(Boolean)的几种常见方法,文中的示例代码讲解详细,感兴趣的小伙伴... 目录方案一:使用COUNT查询存在性(推荐)方案二:条件表达式直接返回布尔方案三:存在性检查(EXI

Python函数返回多个值的多种方法小结

《Python函数返回多个值的多种方法小结》在Python中,函数通常用于封装一段代码,使其可以重复调用,有时,我们希望一个函数能够返回多个值,Python提供了几种不同的方法来实现这一点,需要的朋友... 目录一、使用元组(Tuple):二、使用列表(list)三、使用字典(Dictionary)四、 使

Java中Switch Case多个条件处理方法举例

《Java中SwitchCase多个条件处理方法举例》Java中switch语句用于根据变量值执行不同代码块,适用于多个条件的处理,:本文主要介绍Java中SwitchCase多个条件处理的相... 目录前言基本语法处理多个条件示例1:合并相同代码的多个case示例2:通过字符串合并多个case进阶用法使用

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文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、