|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
可怜的程序员,还是逃不出移植的命运!明天在完成功效:"在保留数据之前,必要先将数据传送到数据库中举行逻辑考证,假如考证未经由过程,则必要给出用户一个能够选择“是”与“否”的提醒框,假如用户选择了“是”,那末从头保留数据,不然保持保留数据"时碰到了这个成绩,由于这个功效应当也是人人常常会碰着的问是,以是这里也一并解说下我的完成办法。
起首我是在保留办法中举行逻辑考证,好比保留办法为lbtnSave_Click(objectsender,EventArgse),那末该办法的代码以下:
protectedoverridevoidlbtnSave_Click(objectsender,EventArgse)
{
if(Request.Form["__EVENTARGUMENT"]=="true")
{
实行保留办法
}
else
{
//这里是逻辑考证代码
if(考证经由过程)
{
实行保留办法
}
else
{
//考证欠亨过,则实行页面上的CheckBalanceDate办法,CheckBalanceDate是一个js办法。
ScriptManager.RegisterStartupScript(Page,Page.GetType(),"toopBalanceDate","CheckBalanceDate("+行号+")",true);
}
}
}
CheckBalanceDate办法以下:
functionCheckBalanceDate(number){
if(confirm("第"+number+"行数据的结算日期年夜于付款日期,是不是持续保留?")){
__doPostBack(ctl00$lbtnSave,true)};
}
}
从这里我们就能够分明下面的lbtnSave_Click办法中的if(Request.Form["__EVENTARGUMENT"]=="true")判别是起甚么感化了。Request.Form["__EVENTARGUMENT"]=="true",则申明此次回发是用户点了断定后回发还服务器,以是间接实行保留办法。假如Request.Form["__EVENTARGUMENT"]!="true",则申明用户是点击了“保留”按钮举行回发的,以是必要实行判别逻辑。
到这里,仿佛就已完成了我要的功效了,可是页面在实行时,会报出:
毛病:工具不撑持此属性或办法
的毛病,跟踪到堕落的源,发明是以下代码报错了:
functionWebForm_OnSubmit(){
if(typeof(ValidatorOnSubmit)=="function"&&ValidatorOnSubmit()==false)returnfalse;;if(!ctl00_ContentPlaceHolder_Content_grid_div.prepareData()){returnfalse;};
returntrue;
}
下面的代码为asp.net主动天生的页面考证js,估量是由于这个办法中的某个工具还将来的及创立,就已被挪用了。以是我将CheckBalanceDate办法复杂修正了一下便可,修正后的代码以下:
functionCheckBalanceDate(number){
if(confirm("第"+number+"行数据的结算日期年夜于付款日期,是不是持续保留?")){
window.setTimeout(function(){__doPostBack(ctl00$lbtnSave,true)},0);
}
}
window.setTimeout办法用于在指定的毫秒数后挪用函数或盘算表达式,即延时实行__doPostBack办法。
注重:即便修正了CheckBalanceDate办法,页面大概还会报出以下毛病:
回发或回调参数有效。在设置中利用<pagesenableEventValidation="true"/>或在页面中利用<%@PageEnableEventValidation="true"%>启用了事务考证。出于平安目标,此功效考证回发或回调事务的参数是不是来历于最后出现这些事务的服务器控件。假如数占有效而且是预期的,则利用ClientScriptManager.RegisterForEventValidation办法来注册回发或回调数据以举行考证。
这个毛病的办理办法就很复杂了,只需在Page的头部增添EnableEventValidation="false"指令便可。我有个同学,他是搞Java的,他给我说“Java不是效率低,而是速度慢。”,我不是搞Java的,我实在想不透这句话的含义,难道执行速度不就是效率低吗?难道执行速度慢还成效率高了? |
|