[英]Call JS function from code behind C#
我有一個名為RowClick的onRowClick函數,並且工作正常。 我試圖將其移至按鈕並從后面的代碼中調用該函數。 由於某些原因未觸發該功能。.任何人都知道為什么以及如何可以解決此問題?
aspx.cs
if (e.CommandName == "Addvoucher")
{
GridDataItem item = (GridDataItem)e.Item;
var id = item.GetDataKeyValue("RowID");
ClientScript.RegisterStartupScript(Page.GetType(), "mykey", "RowClick("+id+");", true);
}
aspx
<script>
var popUpObj;
function RowClick(sender, eventArgs) {
var filterId = eventArgs.getDataKeyValue('RowID');
popUpObj = window.open("voucher.aspx?param=" + filterId + "",
"ModalPopUp",
"toolbar=no," +
"scrollbars=no," +
"location=no," +
"statusbar=no," +
"menubar=no," +
"resizable=0," +
"width=530," +
"height=500," +
"left = 450," +
"top=130"
);
popUpObj.focus();
LoadModalDiv();
}
function LoadModalDiv()
{
var bcgDiv = document.getElementById("divBackground");
bcgDiv.style.display="block";
}
function HideModalDiv() {
var bcgDiv = document.getElementById("divBackground");
bcgDiv.style.display = "none";
}
</script>
頁內voucher.aspx
<script type = "text/javascript">
function OnClose() {
if (window.opener != null && !window.opener.closed) {
window.opener.location.reload(); //refreshing parent when popup close
// window.opener.HideModalDiv();
}
//if (window.closed==true) window.open("~/routedoc.aspx");
}
window.onunload = OnClose;
</script>
在后面的代碼上調用JavaScript函數,即在Page_Load上
ClientScript.RegisterStartupScript(GetType(), "Javascript", "javascript:FUNCTIONNAME(); ", true);
如果那里有UpdatePanel
,請嘗試這樣
ScriptManager.RegisterStartupScript(GetType(), "Javascript", "javascript:FUNCTIONNAME(); ", true);
像這樣更改您的js函數
function RowClick(filterId) {
popUpObj = window.open("voucher.aspx?param=" + filterId + "",
"ModalPopUp",
"toolbar=no," +
"scrollbars=no," +
"location=no," +
"statusbar=no," +
"menubar=no," +
"resizable=0," +
"width=530," +
"height=500," +
"left = 450," +
"top=130"
);
popUpObj.focus();
LoadModalDiv();
}
現在不需要此行var filterId = eventArgs.getDataKeyValue('RowID');
現在,您可以在js函數中直接使用參數filterId
。
因為您正在調用RowClick()
並且在代碼中正在調用第二個參數eventArgs
,但實際上這是一個undefined
值。
確保傳遞正確的參數。
由於您只是調用javscript函數,因此我建議僅在網格行數據上綁定,只需將值分配給錨點即可a
標記或按鈕來調用javascript。
問題是您沒有從服務器端傳遞該js函數的任何參數,而是從客戶端獲得了客戶端函數中的數據鍵值,就像在服務器端編輯的問題傳遞行ID一樣,並如下更改了客戶端函數,
function RowClick(rowId)
{
// use rowId
popUpObj = window.open("voucher.aspx?param=" + rowId + "",
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.