c# - Javascript 函数不会从代码隐藏中调用

标签 c# javascript

我在带有参数的 javascript 中有一个函数,我想在 Gridview 绑定(bind)它的数据时多次调用这个函数。所以我把代码放成这样

if (e.Row.RowType == DataControlRowType.DataRow)
{
    if (((DataRowView)e.Row.DataItem) != null)
 {
Page.ClientScript.RegisterStartupScript(this.GetType(),new Random().Next(100).ToString(), 
                        "likeStatus('"+argument+"')", true);
 }
}

每次我改变 key 的值,但这个函数只被调用一次。 所以请帮助我在 gridview 绑定(bind)的每次迭代中调用函数应该怎么做。

提前致谢

最佳答案

问题是,如果您需要随机性,则需要使用相同的 Random 实例,并且不能每次都创建一个新实例。你现在的做法可能每次都会产生相同的值(value)。 (另请注意,随机值与唯一值不同)
然而,为了解决这个问题,我会做一些不同的事情。

在您的类中声明一个 StringBuilder 作为字段。在绑定(bind)网格之前创建它:

sb = new StringBuilder();
gridView.DataBind();

然后在 GridViewRowDataBound 事件中写入构建器。

if (e.Row.RowType == DataControlRowType.DataRow)
{
    if (((DataRowView)e.Row.DataItem) != null)
       sb.Append("likeStatus('"+argument+"');");
}

最后在PreRender中注册脚本字符串

Page.ClientScript.RegisterStartupScript(this.GetType(), "MyScript", 
                        sb.ToString(), true);

或者使用唯一值作为键,例如 Guid.NewGuid().ToString()

关于c# - Javascript 函数不会从代码隐藏中调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13321135/

相关文章:

javascript - 根据偏移量和总计计算当前页

c# - 抑制条件方法的代码分析警告

c# - HttpRequestBase 在哪里?

javascript - 从另一个对象中提取一个对象

javascript - 如何使用 Fontawesome 复选框格式化程序从免费 jqgrid 中发布的行中删除操作按钮

php - "pushing"数据库更改为网页未刷新

c# - 将锁设置为空

c# - 如何扩展继承的方法而不是覆盖它?

c# - 如何迭代这种特定类型的 Dictionary<int, Result>?

javascript - 单击一行获取该特定行的数据