8

我的链接按钮 -

<asp:LinkButton runat="server" ID="lbtnEdit" Text="edit" OnClientClick="javascript:msgDisp('<%# Eval(LocationId).toString() %>')" />

和 javascript msgDisp 是-

<script type="text/javascript" language="javascript">
    function msgDisp(lid) {            
        alert(lid);
    }
</script>

但它没有在 pop 中给出 LocationId,而是整个字符串 <%#......%> 出现在弹出消息中。如何在 javascript 中传递 Eval 值。

4

5 回答 5

13

您可以将 的全部内容构建OnClientClick为代码括号内的字符串,它会像您期望的那样输出。

<asp:LinkButton runat="server" ID="lbtnEdit" Text="edit" 
    OnClientClick='<%# "msgDisp(" + Eval("LocationId") + ");" %>' /> 

这是假设 LocationId 是一个有效的数字——当它呈现时没有引号来包装你的值,所以输出类似msgDisp(hello);的东西会中断。我不知道如何以这种方式解决这个问题,所以如果你必须这样做,我建议在活动OnClientClick期间设置服务器端ItemDataBound。这就是它想要的父级是Repeater控件的地方。

protected void notesRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    MyClass item = (MyClass)e.Item.DataItem;
    LinkButton lbtnEdit = (LinkButton)e.Item.FindControl("lbtnEdit");
    lbtnEdit.OnClientClick = string.Format("msgDisp('{0}');", item.LocationId);
}
于 2010-09-30T13:45:09.790 回答
2

如果您在标记中呈现绑定表达式标签 (<%# ... %>),则意味着您的 LinkBut​​ton 未在绑定容器中初始化。正如@lincolnk 演示的那样,绑定容器可以是Repeater 或GridView 项、日历单元等。此外,您不必在函数调用前加上“javascript:”。OnClientClick 属性的值呈现为锚点的onclick事件的处理程序。

于 2010-09-30T18:36:17.097 回答
2

在网上到处找。每个人都说使用 CodeBehind。请参阅我的解决方案,即使我的 datavalue 像 O'Neal 一样在其中包含单引号时也可以使用。 如果您的数据项包含双引号,这将不起作用。但适用于我需要它做的事情,那就是传入一个人的名字。注意警报调用中的反斜杠。

OnClientClick="<%#string.Format(&quot;alert(\&quot;{0}\&quot;); return false; &quot;, Eval(&quot;NAME&quot;))%>"**
于 2013-01-18T21:04:16.463 回答
1

你可以像 OnClick='<%# "msgDisp(" + Eval("LocationId") + ");" %>'

于 2015-01-19T08:09:38.870 回答
0

我要感谢林肯克的回答。我目前正在帮助为 googam.com 建立一个新的社交网络。几天来,我一直在寻找一种解决方案来查看用户的个人资料,在数据列表中,在 jquery 模式对话框弹出窗口中。在 ItemDataBound 事件中设置链接按钮 OnClientClick 解决了将用户 id 传递给 JQuery 函数以在弹出窗口中打开 acsx 用户控件的问题。

    jQuery(document).ready(function () {
        var mydiv = jQuery("#mydialog").dialog({
            autoOpen: false,
            resizable: false,
            modal: true,
            width: '500',
            height: '400'
        }).css("font-size", "0.8em");
    });

    function ShowPopup(uid) {
        var mydiv = jQuery("#mydialog")
        //alert(uid)
        // Load the content using AJAX
        mydiv.load('Profile.aspx?id=' + uid);
        // Open the dialog        
        mydiv.dialog('open');
    }

//////////////

Protected Sub DataList1_ItemDataBound(ByVal sender As Object, ByVal e As DataListItemEventArgs)
    If e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem Then
        Dim imageControl = TryCast(e.Item.FindControl("Image1"), Image)
        Dim Uid As String = imageControl.ImageUrl

        Dim ProfileBtn As LinkButton = TryCast(e.Item.FindControl("ProfileButton"), LinkButton)
        ProfileBtn.OnClientClick = String.Format("ShowPopup('{0}');return false;", Uid)

    End If
End Sub
于 2013-08-22T20:05:32.443 回答