2013-09-26 105 views
2

我需要将参数从repeater传递给javascript函数。但我不能这样做:如何使用aspx参数调用html按钮onclick javascript函数?

 onclick="myFunction(<%# ((myObject)Container.DataItem).myValue) %>)" 

它说,语法错误。

我需要拨打myFunction(myValue) javascript函数。 而myValue有来自

 <%# ((myObject)Container.DataItem).myValue) %> 

什么是做这种正确的方法是什么?

+0

的onclick =“myFunction的('<%# ((myObject)Container.DataItem).myValue)%>')“ – Shadow

+0

不,它不在我的ascx文件中工作。 “未终止的字符串常量预期')'” – Marek

回答

0

你需要做的是添加几个报价:

onclick="myFunction("<%# ((myObject)Container.DataItem).myValue %>")"

这应该与你想要达到的工作。

+0

这也不起作用。它说未终止的字符串常量 – Marek

+0

你有一个额外的')'。我编辑了我的答案。 – Aashray

0

试试这个,如果你传递字符串

onclick='<%# string.Format("myFunction(\"{0}\")",((myObject)Container.DataItem).myValue)%>' 

以其他方式使用下列...

onclick='<%# string.Format("myFunction({0})",((myObject)Container.DataItem).myValue)%>' 
+0

我也这么认为,但第一个选项我最终与ysod说解析错误。但是,我正在传递字符串。 – Marek

+0

好吧,没问题。 – asharajay

+0

解析器错误消息:服务器标记不能包含<% ... %>构造。 – Marek

-1

您应该使用,而不是=#

onclick = "myFunction(<%= ((myObject)Container.DataItem).myValue) %>)"

+0

是否可以容纳在<%= %>? – asharajay

+0

仍然无法正常工作。是的,容器可以访问。 – Marek

0

尝试插件克来自服务器端的onclick,

Control.Attributes.Add("onclick",((myObject)Container.DataItem).myValue) 
0

使用类似this.Modify这根据您的要求。

protected void Gridview1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
if (e.Row.RowType == DataControlRowType.DataRow) 
{ 

var jsFunction = String.Format("Javascriptfunctionname('{0}','{1}');", parameter1, parameter2); 
Gridcontrol.Attributes.Add("onclick", jsFunction); 

} 

希望这会对你有所帮助。

0

请尝试以下代码。

onclick="javascript:myFunction("<%=((myObject)Container.DataItem).myValue) %>")"; 
1

如果你想写这一切在标记(而不是在的RowDataBound或代码某处后面),你可以使用这个语法:

onclick = '<%# "myFunction(" + Container.DataItemIndex + ")" %>' 
相关问题