2012-04-17 117 views
1

我想在gridview中點擊一行,以便它會導致回發,以便我可以執行代碼隱藏。調用代碼隱藏的Javascript澄清

我在我的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

這可以幫助你:

  1. 的第一個作品,因爲你已經指定了的onClick處理程序關聯到__doPostBack函數是在JavaScript。 'javascript:'只是指定該函數是用javascript編寫的,只有在腳本與元標記中指定的腳本不同時才應該使用。

    第二個不起作用,因爲您已經爲javascript處理程序指定了html腳本。當這到javascript解釋器,它不能夠理解標籤,因此wouldnt工作。

  2. __doPostBack不建議用於所提到的所有情況,如here所述。但是如果您沒有其他選擇創建回發,那麼您可以使用它。這link將能夠給你更多的信息。

+0

嘿,非常感謝!好信息。 – CptSupermrkt 2012-04-18 00:50:47