将值绑定到javascript方法作为参数

时间:2012-12-11 04:52:37

标签: c# javascript asp.net repeater

我在使用Eval()绑定javascript方法调用时遇到错误。 以下是转发器控件中的代码行:

<asp:Button ID="View" runat="server" Text="View" CommandName="View" OnClientClick="OpenInNewWindow(<%# Eval("JobID")%>)">
                        </asp:Button>

我需要为该javascript方法获取值jobId。任何人都可以帮助我吗?

5 个答案:

答案 0 :(得分:1)

我猜你在JobID周围缺少引号。

尝试:

<asp:Button ID="View" runat="server" Text="View" CommandName="View" OnClientClick="OpenInNewWindow('<%# Eval("JobID")%>')">
</asp:Button>

答案 1 :(得分:1)

试试这个:

<asp:Button ID="AddCartButton" runat="server" Text="Add To Cart" onClick="AddCartButton_Click" 
     OnClientClick='<%# Eval("JobID", "OpenInNewWindow(\"{0}\").ToString()") %>'/>

每个单引号迷失标记解析器。除此之外,表达式几乎与常规C#表达式

的评估方式相同

更正了语法

答案 2 :(得分:0)

在代码后面或后面的代码中设置OnClientClick属性添加行page.DataBind()。当页面被绑定时,它将评估JobID并将值添加到发送给客户端的页面。

如果您需要更多信息,可以在其他论坛上查看ASP.NET data binding overviewthis发布信息。 我通常避免页面绑定,而是在代码后面设置属性。虽然页面绑定非常有用,但我发现它不太可预测(他们是否在页面加载时调用bind?在按钮事件中?)并且有时很复杂(一个变量需要在页面加载时绑定,但另一个变量需要绑定)。

答案 3 :(得分:0)

<asp:Button ID="View" runat="server" Text="View" CommandName="View" OnClientClick="window.open('yourpage.aspx?JobID=<# Eval("JobID")','','width=200,height=100')">
</asp:Button>

答案 4 :(得分:0)

不要以声明方式绑定javascript函数。通过捕获相应网格的itemdatabound事件在代码中执行此操作。在这种情况下,首先获取对按钮的引用然后定义将javascript函数绑定为:

    int JobID = DataBinder.Eval(e.Row.DataItem, "JobID").ToString();
    Btn.Attributes.Add("OnClientClick","javascript:OpenInNewWindow(" + JobID + ")");

希望有帮助...