0

メソッドの 1 つを介して次の JavaScript を実行する必要があります。しかし、それは実行されていません。コードの問題です。

private void fillGrid1()
{
        GridView1.DataSource = myDocCenter.GetDsWaitingForMe(Session["UserID"].ToString());
        HiddenField1.Value = { myDocCenter.GetDsWaitingForMe(Session["UserID"].ToString()).Tables[0].Rows.Count).ToString();
        GridView1.DataBind();

        String csname1 = "PopupScript1";
        String csname2 = "ButtonClickScript1";
        Type cstype = this.GetType();

        // Get a ClientScriptManager reference from the Page class.
        ClientScriptManager cs = Page.ClientScript;


        // Check to see if the client script is already registered.
        if (!cs.IsClientScriptBlockRegistered(cstype, csname2))
        {
            StringBuilder cstext2 = new StringBuilder();
            cstext2.Append("<script type=\"text/javascript\"> ");

            // You can  add JavaScript by using "cstext2.Append()".

            cstext2.Append("var count = document.getElementById('ctl00_ContentPlaceHolder1_HiddenField2');");
            cstext2.Append("var count = '100';");
            cstext2.Append("document.getElementById('sp2').innerHTML = count;");
            cstext2.Append("script>");

            cs.RegisterClientScriptBlock(cstype, csname2, cstext2.ToString(), false);
        }
}
4

4 に答える 4

1

スクリプト タグが適切に閉じられていません。

変化する

cstext2.Append("script>");

cstext2.Append("</script>");
于 2009-12-14T13:27:51.327 に答える
0

アダマンティウムが言ったことに加えて、あなたの JS は少し奇妙に見えます。count変数を2回宣言して設定しているようです-これを行うつもりでしたか。

それに続いて、最善の方法は、ページをレンダリングしてからソースを表示することです。あなたのJSはページにレンダリングされていますか? そこにアラートを貼り付けてみてください...発火していますか?

于 2009-12-14T13:40:28.790 に答える
0
>   cstext2.Append("var count =
> document.getElementById('ctl00_ContentPlaceHolder1_HiddenField2');");

ここでは ClientID プロパティを使用します。HiddenField2.ClientID

于 2009-12-14T13:47:52.367 に答える
0

<form>RegisterClientScriptBlock は、タグを開いた直後にスクリプトを発行します。ブラウザはタグが開いた直後にもこのスクリプトを実行しますが、参照された要素はこの時点ではまだ処理されていません - ブラウザはそれらを見つけることができません。

RegisterStartupScript<form>メソッドは、タグが終了する直前にスクリプトを発行します。ほとんどすべてのページ要素がこの場所でブラウザによって処理され、getElementById は何かを見つけることができます。

詳細については、 http://jakub-linhart.blogspot.com/2012/03/script-registration-labyrinth-in-aspnet.htmlを参照してください。

于 2012-03-11T21:19:53.833 に答える