昨天在项目中遇到了一个问题,要前台脚本调用调用后台的事件。经过查阅网上的资料,这个方法还不错。
第一步:前台写一个脚本,我需要在前台判断用户输入的是否是回车键,然后执行后台函数。
<
script type
=
"
text/javascript
"
>
function keyClick(cmd)
... {
//判断是否是回车键
if(event.keyCode==13)
...{
//执行后台更新代码
eval(cmd);
}
}
</ script >
function keyClick(cmd)
... {
//判断是否是回车键
if(event.keyCode==13)
...{
//执行后台更新代码
eval(cmd);
}
}
</ script >
第二步:在后台写相应的函数。将要传的参数定义为字符串,通过GetPostBackEventReference在Render事件中来安全的注册脚本。
protected
override
void
Render(HtmlTextWriter writer)
... {
foreach (GridViewRow Row in GridView1.Rows)
...{
//这里进行安全脚本注册,只能在Render事件中进行,
String References = ClientScript.GetPostBackEventReference(gvRegister, "Update$" + Row.RowIndex.ToString(), True)
String Script= "javascript:keyClick(""EVAL_COMMAND"")"
//传参数
Script = Script.Replace("EVAL_COMMAND", References)
if (Row.RowType == DataControlRowType.DataRow)
...{
//ClientScript.GetPostBackEventReference只能在Render的时候调用,进行安全注册脚本
if (Row.RowState == DataControlRowState.Edit)
...{
Row.Attributes.Add("onkeydown", Script)
}
}
}
base.Render(writer);
}
... {
foreach (GridViewRow Row in GridView1.Rows)
...{
//这里进行安全脚本注册,只能在Render事件中进行,
String References = ClientScript.GetPostBackEventReference(gvRegister, "Update$" + Row.RowIndex.ToString(), True)
String Script= "javascript:keyClick(""EVAL_COMMAND"")"
//传参数
Script = Script.Replace("EVAL_COMMAND", References)
if (Row.RowType == DataControlRowType.DataRow)
...{
//ClientScript.GetPostBackEventReference只能在Render的时候调用,进行安全注册脚本
if (Row.RowState == DataControlRowState.Edit)
...{
Row.Attributes.Add("onkeydown", Script)
}
}
}
base.Render(writer);
}
这样就可以前台后台交互了。是不是很方便