2

いくつかのテキスト ボックスとドロップダウン ボックスを含む Gridview を使用しています。ユーザーが行 (テキスト ボックスまたは DDL) をクリックすると、行番号を知らせる Javascript アラートをポップアップ表示したいと考えています。ユーザーがテキスト ボックスの 1 つをクリックしたときにイベントを発生させることはできますが、C# 変数を Javascript に入れる方法がわからないため、それがアラート内のどの行にあるのかをユーザーに伝えることはできません。アラート。

これが私が試したことです:

public void gv_instruments_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
       TextBox txtBox1 = (TextBox)e.Row.FindControl("txt_partNumbers");
       if (txtBox1 != null)
       {
           txtBox1.Attributes.Add("onclick", "javascript:alert('Message')"); //works

           Int32 selectedRow = e.Row.RowIndex;//get row index number
           string message = "You've selected row: " + selectedRow.ToString();
           message = "javascript:alert('" + message + "')";

           //txtBox1.Attributes.Add("onclick", message); //doesn't work 

           string title = "title";
           //ScriptManager.RegisterStartupScript(Page, Page.GetType(), 
                title, "alert('" + message + "');", true); //doesn't work

           //ScriptManager.RegisterClientScriptBlock(Page,Page.GetType(), 
                title, "alert('" + message + "');",true); //doesn't work
            }
        }
    }

この構成を使用しているページをインターネット上で見つけました"javascript:alert('" + message + "')";が、機能しません (または、少なくとも機能させることはできません)。私は二重引用符と一重引用符に注意しており、デバッガーで有効なメッセージのように見えるものを見ることができます (EG: javascript:alert('You've selected row: 0')、「you've」のアポストロフィも問題だったのではないかと思ったので、それを削除しました& これを「you have」に置き換えましたが、それも機能しません。

txtBox1.Attributes.Add("onclick", "javascript:alert('Message')");

私は何が欠けていますか?

4

5 に答える 5

1

2 番目のメッセージに単一引用符が含まれているため、おそらく機能しません。

"You've selected row: "
    ^

書いてみてください

"You've selected row: "
于 2013-05-06T21:01:25.953 に答える
0

あなたの問題は、 "You've" のアポストロフィ (') が原因で発生します。アポストロフィをエスケープして、「You\'ve selected row:」を使用する必要があります。

于 2013-05-06T21:03:56.030 に答える
0

次のように、レンダリング時にすべてのボタンに ItemIndex プロパティを入力してみてください。

txtBox1.Attributes.Add(
    "onclick", 
    "javascript:alert('" + e.Item.ItemIndex.ToString() + "')"
    );

あなたの例では8行目です。

于 2013-05-06T21:06:50.023 に答える