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

相关文章

电脑多久清理一次灰尘合? 合理清理电脑上灰尘的科普文

《电脑多久清理一次灰尘合?合理清理电脑上灰尘的科普文》聊起电脑清理灰尘这个话题,我可有不少话要说,你知道吗,电脑就像个勤劳的工人,每天不停地为我们服务,但时间一长,它也会“出汗”——也就是积累灰尘,... 灰尘的堆积几乎是所有电脑用户面临的问题。无论你的房间有多干净,或者你的电脑是否安装了灰尘过滤器,灰尘都

Android中如何实现adb向应用发送特定指令并接收返回

1 ADB发送命令给应用 1.1 发送自定义广播给系统或应用 adb shell am broadcast 是 Android Debug Bridge (ADB) 中用于向 Android 系统发送广播的命令。通过这个命令,开发者可以发送自定义广播给系统或应用,触发应用中的广播接收器(BroadcastReceiver)。广播机制是 Android 的一种组件通信方式,应用可以监听广播来执行

js window.addEventListener 是什么?

window.addEventListener 是 JavaScript 中的一个方法,用于向指定对象(在这个情况下是 window 对象,代表浏览器窗口)添加事件监听器,以便在该对象上发生特定事件时执行相应的函数(称为事件处理函数或事件监听器)。 这个方法接受三个参数: 事件类型(type):一个字符串,表示要监听的事件类型。例如,"click" 表示鼠标点击事件,"load" 表示页面加

struts2中的json返回指定的多个参数

要返回指定的多个参数,就必须在struts.xml中的配置如下: <action name="goodsType_*" class="goodsTypeAction" method="{1}"> <!-- 查询商品类别信息==分页 --> <result type="json" name="goodsType_findPgae"> <!--在这一行进行指定,其中lis是一个List集合,但

(function() {})();只执行一次

测试例子: var xx = (function() {     (function() { alert(9) })(); alert(10)     return "yyyy";  })(); 调用: alert(xx); 在调用的时候,你会发现只弹出"yyyy"信息,并不见弹出"10"的信息!这也就是说,这个匿名函数只在立即调用的时候执行一次,这时它已经赋予了给xx变量,也就是只是

一款支持同一个屏幕界面同时播放多个视频的视频播放软件

GridPlayer 是一款基于 VLC 的免费开源跨平台多视频同步播放工具,支持在一块屏幕上同时播放多个视频。其主要功能包括: 多视频播放:用户可以在一个窗口中同时播放任意数量的视频,数量仅受硬件性能限制。支持多种格式和流媒体:GridPlayer 支持所有由 VLC 支持的视频格式以及流媒体 URL(如 m3u8 链接)。自定义网格布局:用户可以配置播放器的网格布局,以适应不同的观看需求。硬

flume系列之:记录一次flume agent进程被异常oom kill -9的原因定位

flume系列之:记录一次flume agent进程被异常oom kill -9的原因定位 一、背景二、定位问题三、解决方法 一、背景 flume系列之:定位flume没有关闭某个时间点生成的tmp文件的原因,并制定解决方案在博主上面这篇文章的基础上,在机器内存、cpu资源、flume agent资源都足够的情况下,flume agent又出现了tmp文件无法关闭的情况 二、

Qt中window frame的影响

window frame 在创建图形化界面的时候,会创建窗口主体,上面会多出一条,周围多次一圈细边,这就叫window frame窗口框架,这是操作系统自带的。 这个对geometry的一些属性有一定影响,主要体现在Qt坐标系体系: 窗口当中包含一个按钮,这个按钮的坐标系是以父元素为参考,那么这个参考是widget本体作为参考,还是window frame作为参考,这两种参考体系都存在

Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.B

一个bug日志 FATAL EXCEPTION: main03-25 14:24:07.724: E/AndroidRuntime(4135): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.syyx.jingubang.ky/com.anguotech.android.activity.Init

最初的window

不知你是否也是一个常年在MFC下编程的程序员,有的时候是否忘记了在MFC之前是如何写画窗口的了呢,或者你从来都只是机械的在MFC下面写代码,已经麻木了。其实有一个很简单的方法,或许能够帮你更清楚的了解WINDOW是怎么产生的。 随便用什么版本的VS,在创建win32工程的时候,直接创建WINDOW类型的就OK了。然后,来研究下产生的源代码吧。 // Global Variables:H