引自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事件
灵活性最大的解决办法,要怎么就怎么样