下边是.cs文件::private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面 //取参数
if(Request.QueryString["ProjectID"] != null)
{
ProjectID = int.Parse(Request.QueryString["ProjectID"].ToString());
ViewState["ProjectID"] = ProjectID;
}
else
{
if(ViewState["ProjectID"] != null)
{
ProjectID = int.Parse(ViewState["ProjectID"].ToString());
}
else
{
throw new Exception("invalid params");
}
}
if(Request.QueryString["OrgID"] != null)
{
OrgID = int.Parse(Request.QueryString["OrgID"].ToString());
ViewState["OrgID"] = OrgID;
}
else
{
if(ViewState["OrgID"] != null)
{
OrgID = int.Parse(ViewState["OrgID"].ToString());
}
else
{
throw new Exception("invalid params");
}
}
if(!Page.IsPostBack)
{
this.InitGrid();
this.ibtn_bm.Attributes.Add("onClick","javascript:return selectMan();");
this.ibtn_qxbm.Attributes.Add("onClick","javascript:return confirmDel();");
}
}
private void ibtn_bm_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
//检查
//取报名范围中当前部门的指定人数
ImplementAppointDeptDB mannumObj = new ImplementAppointDeptDB(ProjectID,OrgID);
int intAppointManNum = mannumObj.ManNum; //取当前部门已报名人数
int AlreadySignUpManNumDept = SignUpDB.GetAlreadySignUpManNumDept(ProjectID,OrgID);
if(AlreadySignUpManNumDept == -1)
{
Response.Write("<script language='javascript'>alert('统计已报名人数时出错,请稍后再试!');</script>");
return ;
}
else if(AlreadySignUpManNumDept >= intAppointManNum)
{
Response.Write("<script language='javascript'>alert('当前培训对于你所属部门的名额已满,不可以再报名!');</script>");
return ;
} ImplementManDB ProjectManObj = new ImplementManDB();
ProjectManObj.ProjectID = ProjectID;

string[] ManIDList;
string returnInfo = "";
int i_repeat=0,i_Success=0,i_Failure=0; ManIDList = this.txt_ManIDList.Text.Trim().Split(','); //检查本次报名人数与已报名人数之和是否已超出当前部门指定报名人数
if((AlreadySignUpManNumDept + ManIDList.Length) > intAppointManNum)
{
int i_residual = intAppointManNum - AlreadySignUpManNumDept;
Response.Write("<script language='javascript'>alert('对不起,你所选人数过多,当前培训对于你所属部门的名额还剩下"+i_residual.ToString()+"个!');</script>");
return ;
} for(int i=0;i<ManIDList.Length;i++)
{
ProjectManObj.ManID = int.Parse(ManIDList[i]); //检查重复人员
if(ProjectManObj.IsExistByProjectIDAndManID())
{i_repeat ++;}
else
{
if(ProjectManObj.Add() == "Success")
{i_Success ++;}
else
{i_Failure ++;}
}
} if(i_Success > 0)returnInfo+="\\r\\n"+i_Success.ToString()+"个人员报名成功!\\r\\n";
if(i_Failure > 0)returnInfo+="\\r\\n"+i_Failure.ToString()+"个人员报名失败!\\r\\n";
if(i_repeat > 0)returnInfo+="\\r\\n有"+i_repeat.ToString()+"个人员重复,不可重复报名!\\r\\n"; Response.Write("<script language='javascript'>alert('"+returnInfo+"');</script>");
Response.Write("<script language='javascript'>window.location.href='Tra_SignUp_Dept.aspx?ProjectID="+ProjectID.ToString()+"&OrgID="+OrgID.ToString()+"';</script>");
}

解决方案 »

  1.   

    这么长,晕啊!
    http://dotnet.aspx.cc/ShowDetail.aspx?id=49ML4AO8-5PB3-4KNY-NJZD-LJOIOXV4M1X4
      

  2.   

    http://blog.csdn.net/net_lover/archive/2002/09/24/6910.aspx
      

  3.   

    现在的问题就是,当我点击itbn_bm按钮打开showModalDialog窗口(OrgStudent_Frame.aspx),选择了部分记录之后,返回主窗口的ibtn_bm_Click事件,在ibtn_bm_Click事件里边我作了数据检查,当执行到
    Response.Write("<script language='javascript'>alert('当前培训对于你所属部门的名额已满,不可以再报名!');</script>");
    return ;或者执行到
    Response.Write("<script language='javascript'>alert('对不起,你所选人数过多,当前培训对于你所属部门的名额还剩下"+i_residual.ToString()+"个!');</script>");
    return ;
    那么最终结果是:我的主窗口的数据全都变成了showModalDialog窗口(OrgStudent_Frame.aspx)里边的所有数据
    问题说完了,谢谢大家,如果哪里不明白,还可以再问我,我在线静候佳音...
      

  4.   

    其实最主要的也不多,我可以精简一下:html代码:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
    <HEAD>
    <script language="javascript">
    function selectMan()
    {
    tmpStr=showModalDialog('../PopWin/OrgStudent_Frame.aspx?OrgID=<%=OrgID%>',window,'dialogLeft:220px;dialogTop:160px;dialogWidth:680px;dialogHeight:550px;center: yes; help: no;status:no;title:no;scroll:yes;'); if(tmpStr != null)
    {
    var myary = new Array();
    var myaryID = new Array();
    var ManIDListValue="";
    myary = tmpStr.split('%%');
    for(var i=0;i<myary.length;i++)
    {
    myaryID = myary[i].split('||');
    ManIDListValue += myaryID[0] + ",";

    }
    ManIDListValue = ManIDListValue.substring(0,ManIDListValue.length - 1);
    document.forms[0].txt_ManIDList.value = ManIDListValue;
    return true;
    }
    else
    {
    return false;
    }
    }
    </script>
    </HEAD>
    <body class="body-d" topMargin="0" MS_POSITIONING="GridLayout">
    <form id="Form1" method="post" runat="server">
    <TABLE class="table00" id="Table2" width="100%">
    <TR>
    <TD id="ibtn_add" style="HEIGHT: 29px" align="center" width="100%"><asp:imagebutton id="ibtn_bm" runat="server" ImageUrl="../../Common/img/ico_bm.gif"></asp:imagebutton>
    </TR>
    </TABLE>
    </form>
    </body>
    </HTML>
      

  5.   

    下边是.cs文件private void Page_Load(object sender, System.EventArgs e)
    {
    if(!Page.IsPostBack)
    {
    this.ibtn_bm.Attributes.Add("onClick","javascript:return selectMan();");
    }
    }private void ibtn_bm_Click(object sender, System.Web.UI.ImageClickEventArgs e)
    {
    //检查
    //取报名范围中当前部门的指定人数
    ImplementAppointDeptDB mannumObj = new ImplementAppointDeptDB(ProjectID,OrgID);
    int intAppointManNum = mannumObj.ManNum; //取当前部门已报名人数
    int AlreadySignUpManNumDept = SignUpDB.GetAlreadySignUpManNumDept(ProjectID,OrgID);
    if(AlreadySignUpManNumDept == -1)
    {
    Response.Write("<script language='javascript'>alert('统计已报名人数时出错,请稍后再试!');</script>");
    return ;
    }
    else if(AlreadySignUpManNumDept >= intAppointManNum)
    {
    Response.Write("<script language='javascript'>alert('当前培训对于你所属部门的名额已满,不可以再报名!');</script>");
    return ;
    } ImplementManDB ProjectManObj = new ImplementManDB();
    ProjectManObj.ProjectID = ProjectID;

    string[] ManIDList;
    string returnInfo = "";
    int i_repeat=0,i_Success=0,i_Failure=0; ManIDList = this.txt_ManIDList.Text.Trim().Split(','); //检查本次报名人数与已报名人数之和是否已超出当前部门指定报名人数
    if((AlreadySignUpManNumDept + ManIDList.Length) > intAppointManNum)
    {
    int i_residual = intAppointManNum - AlreadySignUpManNumDept;
    Response.Write("<script language='javascript'>alert('对不起,你所选人数过多,当前培训对于你所属部门的名额还剩下"+i_residual.ToString()+"个!');</script>");
    return ;
    } for(int i=0;i<ManIDList.Length;i++)
    {
    ProjectManObj.ManID = int.Parse(ManIDList[i]); //检查重复人员
    if(ProjectManObj.IsExistByProjectIDAndManID())
    {i_repeat ++;}
    else
    {
    if(ProjectManObj.Add() == "Success")
    {i_Success ++;}
    else
    {i_Failure ++;}
    }
    } if(i_Success > 0)returnInfo+="\\r\\n"+i_Success.ToString()+"个人员报名成功!\\r\\n";
    if(i_Failure > 0)returnInfo+="\\r\\n"+i_Failure.ToString()+"个人员报名失败!\\r\\n";
    if(i_repeat > 0)returnInfo+="\\r\\n有"+i_repeat.ToString()+"个人员重复,不可重复报名!\\r\\n"; Response.Write("<script language='javascript'>alert('"+returnInfo+"');</script>");
    Response.Write("<script language='javascript'>window.location.href='Tra_SignUp_Dept.aspx?ProjectID="+ProjectID.ToString()+"&OrgID="+OrgID.ToString()+"';</script>");
    }
      

  6.   

    其实说白了就是 一句话:为何我用showModalDialog之后使主窗口的数据与showModalDialog窗口完全相同了???
      

  7.   

    imgButton相当于一个submitButton,
    点击后,执行完你给它赋的函数后,接着会将<form id="Form1" method="post" runat="server">提交
    所以页面会刷新。将function selectMan()里的这一句return true;改成return false;试试
      

  8.   

    改为return false后 ibtn_bm_Click事件哪里去执行啊!????
      

  9.   

    楼主邮件收到了,大致看了一下,没看明白楼主说的
    [引用]----------------------------------
    我的主窗口的数据全都变成了showModalDialog窗口(OrgStudent_Frame.aspx)里边的所有数据
    [/引用]----------------------------------
    是什么意思,程序有没有在网上,有的话给个地址去看看。或是把
    [code]----------------------------------
    Response.Write("<script language='javascript'>alert('统计已报名人数时出错,请稍后再试!');</script>");
    return ;
    [/code]----------------------------------

    [code]----------------------------------
    Response.Write("<script language='javascript'>alert('当前培训对于你所属部门的名额已满,不可以再报名!');</script>");
    return ;
    [/code]----------------------------------
    里的return;
    改成
    return false;试试
      

  10.   

    是不是Response弄错了,是不是响应的页面弄错了.
    为什么不是使用javascript传递数据.我认为使用javascript
    在showModalDialog页面里面,向上级打开页面传递数据,或是访问上级页面得函数.
    以达到传递数据的功能.
      

  11.   

    是这样的,我现在有两个窗口:窗口A:主窗口,在此窗口上有一个服务器控件按钮'ibtn_1',在窗口打开的时候按钮'ibtn_1'用语句:this.ibtn_bm.Attributes.Add("onClick","javascript:return selectMan();");绑定了javascript的selectMan()函数,selectMan()是用来打开选择窗口并接收选择的数据的,当点击此按钮的时候,系统弹出窗口B以进行数据的选择,在窗口B中选择某几行数据,当窗口B关闭后根据所选的数据用.cs中的方法ibtn_bm_Click进行数据检查,检查通过的话,将数据插入窗口A,不通过就给以提示,提示后退出,窗口A的数据不作任何变化,但问题就出在这里了,当弹出提示之后,窗口A的数据变成了与窗口B的全部数据,也就是说两个窗口的数据变成了一模一样窗口B:一个用来选择数据的弹出窗口,通过showModalDialog打开的窗口