簡體   English   中英

用Java澄清調用后台代碼

[英]Calling code-behind with Javascript clarification

我正在嘗試使gridview中的一行可點擊,以便它引起回發,以便隨后可以執行代碼隱藏。

我在GridView的RowDataBound事件處理程序中擁有此功能。 這項工作:

if (e.Row.RowType == DataControlRowType.DataRow)
{
     e.Row.Attributes["onmouseover"] = "this.style.cursor='pointer';this.style.textDecoration='underline';";
     e.Row.Attributes["onmouseout"] = "this.style.textDecoration='none';";
     e.Row.Attributes["onclick"] = "javascript:__doPostBack('PostBackFromItemWindow', '');";
}

但這不起作用:

if (e.Row.RowType == DataControlRowType.DataRow)
{
     e.Row.Attributes["onmouseover"] = "this.style.cursor='pointer';this.style.textDecoration='underline';";
     e.Row.Attributes["onmouseout"] = "this.style.textDecoration='none';";
     e.Row.Attributes["onclick"] = "<script type='text/javascript'>__doPostBack('PostBackFromItemWindow', '');</script>";
}

問題:

  1. 為什么第一個有效,而第二個無效?
  2. 在嘗試完成此任務(從javascript調用代碼后面)時,是否有其他替代方法可以做到這一點? 我讀了一些書,偶然發現了WebMethods(),但最終不喜歡它們必須靜態才能工作的事實。 上面的內容實際上為我提供了我需要的功能,我只想確保它是一種可以接受的方式(即不被棄用或其他),並且由於某些意外錯誤,我也不會不可避免地給自己造成麻煩這一點。

這可以幫助您:

  1. 第一個有效的原因是,您已指定onClick處理程序與javascript中的__doPostBack函數相關聯。 “ javascript:”僅指定該函數是用javascript編寫的,並且僅當腳本與meta標記中指定的腳本不同時才應使用此函數。

    第二個不起作用,因為您已經為javascript處理程序指定了html腳本。 當到達javascript解釋器時,它將無法理解標簽,因此將無法工作。

  2. 不建議將__doPostBack用於此處提到的所有情況。 但是,如果您沒有其他選擇來創建回發,則可以使用它。 鏈接將為您提供更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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