我想通过imagebutton onclientclick事件将我的动态值传递给javascript函数。 如果我像这样传递静态值
,它工作正常
<asp:ImageButton ImageUrl="~/Images/control_play_blue.png" ForeColor="Transparent"
BorderStyle="None" ToolTip="Chat" runat="server" ID="btnChat"
OnClientClick="javascript:return openWindow('1')" />
&#13;
但是,如果我尝试传递动态值,它就无法工作。
<asp:ImageButton ImageUrl="~/Images/control_play_blue.png" ForeColor="Transparent" BorderStyle="None" ToolTip="Chat" runat="server" ID="btnChat"
OnClientClick="javascript:return openWindow('"+<%#Eval("PujaType") %>+"')" />
&#13;
我尝试了所有可能的组合,但它说标签格式不正确。 任何人都可以帮忙吗?
答案 0 :(得分:0)
不了解ASP,但在JSP中,表达式必须是整个值。尝试:
OnClientClick="<%# "javascript:return openWindow('" + Eval("PujaType") + "')" %>" />
答案 1 :(得分:0)
自从我使用ASP.NET并且目前无法对此进行测试以来已经有一段时间了,但我似乎记得它在包装<%# %>
时需要单引号。
这样的事情:
<asp:ImageButton ImageUrl="~/Images/control_play_blue.png" ForeColor="Transparent"
BorderStyle="None" ToolTip="Chat" runat="server" ID="btnChat"
OnClientClick='<%# "javascript:return openWindow('" + Eval("PujaType") + "')" %>' />
this question上的一些答案表明相同。
另一种方法是在后面的代码中设置值。假设您在重复器或类似的东西中使用此控件,您应该能够在数据绑定期间设置值,如下所示:
void R1_ItemDataBound(Object Sender, RepeaterItemEventArgs e) {
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) {
String pujaType = ((YourType)e.Item.DataItem).PujaType;
((ImageButton)e.Item.FindControl("btnChat")).OnClientClick = "javascript:return openWindow('" + pujaType + "')";
}
}
另一种选择,因为您没有使用任何服务器端事件,将使用常规html而不是ASP.NET控件。这可以通过锚和img标签完成,如下所示:
<a href="#" onclick="openWindow('<%# Eval("pujaType") %>'); return false;">
<img src='<%= ResolveUrl("~/Images/control_play_blue.png") %>' />
</a>
答案 2 :(得分:0)
您不需要围绕Eval
声明进行字符串连接。这样做会产生无效的标记。
更改
"javascript:return openWindow('"+<%#Eval("PujaType") %>+"')"
到
"javascript:return openWindow('<%#Eval("PujaType") %>')"
<asp:ImageButton
ImageUrl="~/Images/control_play_blue.png"ForeColor="Transparent"
BorderStyle="None" ToolTip="Chat" runat="server" ID="btnChat"
OnClientClick="javascript:return openWindow('<%#Eval("PujaType") %>')" />