我在gridview中有以下图像按钮:
<asp:TemplateField HeaderText="Edit" ControlStyle-CssClass="smallTxt"
HeaderStyle-CssClass="smallTxt">
<ItemTemplate>
<asp:ImageButton runat="server" ImageUrl="../images/yellow_arrow.gif" ID="imgbtnsearch"
OnClientClick="javascript:setCustID('<% Eval(idCustomer)%>');return false;" />
</ItemTemplate>
<HeaderStyle HorizontalAlign="Left" />
</asp:TemplateField>
通过这个图像按钮,我调用了一个Javascript函数。请参阅下面的代码。
function setCustID(cid) {
alert(cid);
ShowHideControl('ctl04_divEdit');
document.getElementById('ctl04_hdnIdCustomer').value = cid;
}
当我运行此操作时,我得到的是Eval(idCustomer)
结果数字(在javascript的警告框中),而不是:
<% Eval(idCustomer).toString()%>
当我将#传递给参数时:#&lt;%#Eval(idCustomer)%&gt;
OnClientClick="javascript:setCustID('<%#Eval(idCustomer)%>');return false;"
功能提醒:
<%#Eval(idCustomer)%>
答案 0 :(得分:2)
#
的举动是正确的。除了不引用迷失(就像我在编辑之前所做的那样),调用string.Format
来处理js表达式:
OnClientClicking='<%# string.Format("javascript:setCustID({0});return false;", Eval("idCustomer")) %>'
如果这是一个字符串,还要确保用单引号包装函数参数。如果这是一个整数,请保持原样。
答案 1 :(得分:1)
对不起,因为我在ASP方面不是很好, 但是对于Eval:我认为它不应该以字符串形式传递:“Eval(string)”而是你可以使用Eval(“string”)。