引自http://www.velocityreviews.com/forums/t122096-simple-but-baffling-javascript-prob.html
如果直接使用:
<a href='#' onClick="passValue('<%# DataBinder.Eval(Container.DataItem,"file_no")%> ');return false" >
<%# DataBinder.Eval(Container.DataItem,"sort_nm") %> </a>
產生的程式碼就像:
<a href='#' onClick="passValue('<%# DataBinder.Eval(Container.DataItem,"file_no")%> ');return false" >
XXXXX</a>
其中前一段的資料繫結運算式沒有被解析。
解決方案有兩種:
一、使用HTML元素的自訂屬性
<a href='#' onClick="passValue(this);return false" param1='<%# DataBinder.Eval(Container.DataItem,"file_no")%> '>
<%# DataBinder.Eval(Container.DataItem,"sort_nm") %> </a>
修改passValue,使用param1屬性來取值。
二、使用javascript的"+"運算重排HTML(引文所提未驗證)
<a href='#' onClick=
"passValue('"
+
<% # DataBinder.Eval(Container.DataItem,"file_no")%>
+
"');return false" >
<%# DataBinder.Eval(Container.DataItem,"sort_nm") %> </a>
三、把字元拼接放到伺服器代碼裡面
<a href='#' onClick='<%# "passValue(""" & DataBinder.Eval(Container.DataItem,"file_no") & """);return false"%> ' >
<%# DataBinder.Eval(Container.DataItem,"sort_nm") %> </a>
四、用DataRowBound事件
靈活性最大的解決辦法,要怎麼就怎麼樣