将变量传递给转发器中的javascript图像按钮onclientclick

时间:2015-03-26 20:22:22

标签: javascript asp.net

我想通过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;
&#13;
&#13;

但是,如果我尝试传递动态值,它就无法工作。

&#13;
&#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;
&#13;
&#13;

我尝试了所有可能的组合,但它说标签格式不正确。 任何人都可以帮忙吗?

3 个答案:

答案 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 + "')";
  }
}

Repeater.ItemDataBound Event


另一种选择,因为您没有使用任何服务器端事件,将使用常规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") %>')" />
相关问题