ASP.NETにクライアントスクリプトコードを追加

3431 ワード

ASPを開発しているときNET Webアプリケーションでは、ASPXページに表示されるHTMLにクライアントスクリプトコードを追加する必要があります.実行時にこのコードを追加するには、2つの異なる方法があります.
1つ目の方法は、PageコントロールのRegisterClientScriptBlockメソッドを使用して、実行時にASPXページにコードを追加することができます.この方法にはkeyとscriptの2つのパラメータがある.パラメータkeyは唯一で、ページに追加した各scriptブロックを識別できます.スクリプトコードの重複追加を回避するには、IsClientScriptBlockRegisteredプロパティとkeyの値を使用します.パラメータscriptは、クライアントスクリプトコードを含む文字列です.ユーザーがボタンをクリックすると、次のJavaScriptコードが確認を求めます.
Private Sub Page_Load(byval sender as Object, _
   ByVal e as EventArgs)

   ' Create your script code
   Dim sScript as String = "<script" & _ 
      "language=JavaScript> " 
   sScript = "function confirmDelete() {" 
   sScript += "confirm('Are you sure?');}"
   sScript += "</script>"

   If(Not _
      IsClientScriptBlockRegistered("MyScript") _
         ) Then
         RegisterClientScriptBlock("MyScript", _
            sScript)
   End If

End Sub

前のスクリプトコードをWebページに追加すると、個別のコントロールから呼び出す方法が必要です.しかし、設計時にクライアントイベントハンドラをボタンのonClickイベントに追加してconfirmDelete関数を呼び出すことはできません.実行時にクライアント・イベント・プロシージャを追加する方法が必要です.ユーザがボタンをクリックすると、ASP.NETボタンコントロールはWebページを送信し、サーバ側のButton_をトリガーします.Click()イベントプロセス(event procedure).
2つ目は、実行時にクライアントコードを追加する方法で、サーバコントロールに関連するプロパティセットであるAttributesプロパティを使用します.実行時には、ページがセットに追加した属性をHTMLとして表示します.システムからWeb.UI.WebControls.WebControl派生のASP.ボタンとテキストボックスを含むNETサーバコントロールは、独自のAttributesコレクションプロパティを備えています.ボタンのAttributesコレクションを使用してconfirmDelete関数を呼び出すことができます.
btnDelete.Attributes.Add("onClick", _
   "return confirmDelete();")

上のコードは、ページのOnLoadイベント中に表示される可能性があります.ユーザーがボタンをクリックすると、確認メッセージボックスが削除操作を行うかどうかを尋ねます.ユーザーがOKをクリックすると、そのページがサーバにコミットされ、btnDelete_が実行されます.Click()イベント中の任意のコード.Cancelをクリックすると、Webサーバへのページのコミットがブロックされます.
DataGridコントロールがあり、DataGridがグリッド(grid)の行を削除できるようにしている場合、クライアントコードは必要ありません.グリッドのDeleteボタンをクリックするだけで行を削除できますが、削除時に確認を求めることはありません.このときAttributesプロパティが役立ちます.DataGridのItemDataBound()サーバイベントを使用して、グリッド内の削除ボタンごとに属性を追加できます.DataGridのDataBindメソッドを使用してグリッドにデータをバインドすると、追加された行ごとにItemDataBoundイベントがトリガーされます.イベントに追加されたコードは次のとおりです.
Private Sub MyDataGrid_ItemDataBound(ByVal _
   Sender as object, ByVal e As _
   System.Web.UI.WebControls. _
   DataGridItemEventArgs) _
   Handles MyDataGrid.ItemDataBound

' This code adds javascript to the "Del" 
' button on each row in 
   ' the datagrid the javascript displays a 
   ' message box to the 
   ' user, confirming the delete action
   Dim btnDel As LinkButton
   Const DEL_COLUMN As Int16 = 1
      
   If Not (e.Item.ItemType = _
      ListItemType.Header Or _
   e.Item.ItemType = _
      ListItemType.Footer) Then

   btnDel = _
         e.Item.Cells(DEL_COLUMN).Controls(0)
   btnDel.Attributes.Add("onClick", _
         "confirmDelete();")

   End If

End Sub

あなたにあげるASP.NETアプリケーションがクライアント・スクリプト・コードを追加すると、スクリプト・コードのメリットがすぐにわかります.あなたのアプリケーションのユーザーは、よりインタラクティブで応答の速いインタフェースを提供してくれたことに感謝します.
作成者について:
Paul DelcoglianoはProgressive Systems Consulting社の技術責任者で、Visual Studioから来た.NET beta 1のリリース以来、WindowsやWebベースのアプリケーションを開発してきた.あなたは[email protected]彼に連絡する.