昨天在項目中遇到了一個問題,要前台腳本調用調用後台的事件。經過查閱網上的資料,這個方法還不錯。
第一步:前台寫一個腳本,我需要在前台判斷用戶輸入的是否是回車鍵,然後執行後台函數。
<script type="text/Javascript">
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);
}
這樣就可以前台後台交互了。是不是很方便