2015-05-25 67 views
0

我有一個叫on RowClick的函數onClick,並且工作正常。我試圖將它移動到一個按鈕,並從後面的代碼中調用該函數。由於某種原因不會觸發該功能..任何人都知道爲什麼以及如何解決這個問題?從C#後面的代碼調用JS函數

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> 
+0

將RegisterStartupScript更改爲RegisterClientScriptBlock。 – Mairaj

+0

仍然無法正常工作.. – marios

+1

檢查瀏覽器控制檯以查看是否有任何錯誤? – Mairaj

回答

1

變化這樣

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(); 


    } 

您的js函數沒有必要這行現在var filterId = eventArgs.getDataKeyValue('RowID');現在你可以直接使用參數filterId在你的js函數。

+0

emm是啊現在正在工作,但是當我按下關閉(X)窗口不關閉 – marios

+0

我剛剛在我的答案中包含了RowClick函數,您還需要其他兩個函數,我還沒有包含其他函數,因爲其他函數將保留相同。 – Mairaj

+0

是的,我沒有改變任何東西,除了你告訴我的改變,現在我有這個問題。我有更新我的代碼有問題看看 – marios

1

背後即代碼中調用JavaScript函數在Page_Load中

ClientScript.RegisterStartupScript(GetType(), "Javascript", "javascript:FUNCTIONNAME(); ", true); 

如果你有UpdatePanel有再嘗試這樣

ScriptManager.RegisterStartupScript(GetType(), "Javascript", "javascript:FUNCTIONNAME(); ", true); 
+0

Uncaught TypeError:無法讀取未定義的屬性'getDataKeyValue' – marios

+0

'getDataKeyValue' ??。使用getDataKeyValue將您的代碼發佈到哪裏? –

+0

是腳本的第一行 – marios

0

因爲您呼叫RowClick(),並在你的代碼中調用的第二個參數eventArgs,實際上它是一個undefined值。

確保您傳遞了正確的參數。

既然你只是調用一個javscript函數,那麼我會建議只在網格行數據綁定只是將值分配給一個錨點a標籤或一個按鈕來調用JavaScript。

+0

我可以從這裏調用函數嗎? marios

+0

不,只需添加一個模板列然後添加一個鏈接,然後在網格行數據綁定事件發現鏈接和更新與'javascript:RowClick(123)''''''假設123是你的編號 –

+0

我有嘗試你的方式,我不能通過RowID作爲參數。任何想法爲什麼? – marios

0

問題是你沒有爲服務器端的那個js函數傳遞任何參數,但是你正在獲取客戶端函數中的數據鍵值,就像在你編輯的問題中傳遞服務器端的行ID一樣,並如下改變客戶端函數,

function RowClick(rowId) 
{ 
    // use rowId 
    popUpObj = window.open("voucher.aspx?param=" + rowId + "", 
} 
相關問題