以下是我的JavaScript函数的代码:
function PopUpScreen(txt) {
alert(txt);
}
以下是用于调用JavaScript函数的代码:
<asp:LinkButton ID="LinkButton1" runat="server" Font-Size="Medium" CommandName="Select" CommandArgument='<%# Eval("CertID") & "," & Eval("ReportID") & "," & Eval("PUCOID") %> ' OnClientClick='javascript:PopUpScreen(" + Container.DataItem("ReportToolTipText") + ");' OnCommand="CertLink_Clicked"><%# Container.DataItem("CertID")%></asp:LinkButton>
当我尝试将一个简单的数值传递给PopUpScreen函数时,这段代码工作得很好,打开一个警告窗口,显示我传入函数的数字。但是,当我尝试传入文本值Container.DataItem(“ReportToolTipText”)时,没有任何反应。我花了一天多时间研究这个问题,一次又一次地调整语法,直到我不再收到任何错误消息。我超越了我的绳索。任何人都可以提供给我的帮助对我来说意味着世界。如果您需要任何其他信息,请与我们联系。
答案 0 :(得分:0)
我刚刚在VB.Net中为你做了,但你必须将它转换为C#。将变量txt字符串更改为Container.DataItem
Protected Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
Dim txt As String = "Hello"
ScriptManager.RegisterStartupScript(Me.Page, Me.Page.GetType(), "PopUpScreen",
alert('" & txt & "');", True)
End Sub
答案 1 :(得分:0)
这是WebForms框架的问题之一。你的ASP和C#代码与浏览器中发生的事情相差甚远,很难做到这样的事情。你可以在JavaScript中完成所有这些:
<asp:LinkButton ... OnClientClick='PopUpScreen(this.value);' ... ></asp:LinkButton>
两件事:
OnClientClick
的值只是普通的JavaScript,因此this
属性中的OnClientClick
引用浏览器中的<input type="hidden">
标记,并在浏览器。
从javascript:
属性值中删除OnClientClick
。这成为HTML中的onclick
属性,浏览器已经知道此属性的值是JavaScript。只有在您计划从链接的javascript:
执行JavaScript时,才需要href
前缀:
正确:
<a href="javascript:alert('Hi!')">Say Hi</a>
不正确:
<a href="#" onclick="javascript:alert('Hi!')">Say Hi</a>
正确:
<a href="#" onclick="alert('Hi!')">Say Hi</a>