2

我在 javascript 中有带参数的函数,我想在 Gridview 绑定其数据时多次调用此函数。所以我把这样的代码

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绑定的每次迭代中调用函数应该怎么做。

提前致谢

4

1 回答 1

1

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

StringBuilder在你的类中声明一个字段。在绑定网格之前创建它:

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

然后在写入构建器的RowDataBound情况下。GridView

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()

于 2012-11-10T12:08:05.640 回答