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、この関数は一度だけ呼び出されます。グリッドビューバインディングの各反復で関数を呼び出すにはどうすればよいですか。

前もって感謝します

4

1 に答える 1

1

問題は、ランダム性が必要な場合、同じインスタンスを使用する必要があり、Random毎回新しいインスタンスを作成できないことです。現在行っている方法では、毎回同じ値が生成される可能性があります。(また、ランダムな値は一意の値と同じではないことに注意してください)
問題を解決するには、少し異なる方法で行います。

StringBuilderクラスのフィールドとして a を宣言します。グリッドをバインドする前に作成します。

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 に答える