簡體   English   中英

從C#背后的代碼調用JS函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM