本文主要是介绍利用 window.showModalDialog 一次返回多个值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在实际的工作中,我们会遇到,一次,需要返回值,当然这个操作,也可以用多个DropDownList控件,进行多级联动,但这样,会使页面,经常地刷新,不太利于用户的观看。等等。 在利用window.showModalDialog()进行返回一个值得基础上,进行多个值得返回操作。
在利用window.showModalDialog,方法,主要是利用返回一个数组,之后把数组里面的值取出来,进行赋值操作。
以下是调用页面的HTML的代码:
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 >< a href ="ListSecondHand.aspx" title ="拖车管理" >< span > 拖车管理 </ span ></ a ></ li >
< li >< a 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代码:
<! 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.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 一次返回多个值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!