我将gstring作为参数传递给javascript函数,如下所示:
TimeSpan totalTime = new TimeSpan();
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
TotalQuantity += Convert.ToInt32(DataBinder.Eval(e.Row.DataItem, "Quantity"));
var ts = DataBinder.Eval(e.Row.DataItem, "Time").ToString();
var t = DateTime.Parse(ts).TimeOfDay;
totalTime += t;
}
else if (e.Row.RowType == DataControlRowType.Footer)
{
e.Row.Cells[0].Text = "TotalQuantity";
e.Row.Cells[0].Font.Bold = true;
e.Row.Cells[1].Text = TotalQuantity.ToString();
e.Row.Cells[1].Font.Bold = true;
}
}
这里,值来自动态的控制器。我有javascript函数:
<div class="btn btn-small" id="helpful" onClick="helpful(${value})">Helpful</div>
但我没有得到任何回应。检查时没有错误。我们不能在javascript中传递gstring吗?请帮忙。
答案 0 :(得分:1)
正如@helgew建议的那样,检查输出。另请注意,Grails&gt; 2.3将对使用GString传入的任何内容进行HTML编码,除非您已将其禁用(grails.views.default.code ='none')。您需要使用原始编解码器来避免编码。谨慎使用:
<div class="btn btn-small" id="helpful" onClick="helpful('${raw(value)}')">Helpful</div>
答案 1 :(得分:0)
生成的HTML是什么样的?我认为你有一个javascript错误,因为你没有引用你用作'有用'函数的参数的外推字符串。这应该有效:
<div class="btn btn-small" id="helpful" onClick="helpful('${value}')">Helpful</div>