次の方法で共有


IPostBackDataHandler インターフェイス

定義

ポストバック データを自動的に読み込むために ASP.NET サーバー コントロールで実装する必要があるメソッドを定義します。

public interface class IPostBackDataHandler
public interface IPostBackDataHandler
type IPostBackDataHandler = interface
Public Interface IPostBackDataHandler
派生

次のコード例は、 インターフェイスを実装するカスタム テキスト ボックス サーバー コントロールを IPostBackDataHandler 示しています。 プロパティは Text ポストバックの結果として変更され、ポストバック データが読み込まれた後にサーバー コントロールによってイベントが発生 TextChanged します。

using System;
using System.Web;
using System.Web.UI;
using System.Collections;
using System.Collections.Specialized;

namespace CustomWebFormsControls {

   [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name="FullTrust")]
   public class MyTextBox: Control, IPostBackDataHandler {

      public String Text {
         get {
            return (String) ViewState["Text"];
         }

         set {
            ViewState["Text"] = value;
         }
      }

      public event EventHandler TextChanged;

      public virtual bool LoadPostData(string postDataKey,
         NameValueCollection postCollection) {

         String presentValue = Text;
         String postedValue = postCollection[postDataKey];

         if (presentValue == null || !presentValue.Equals(postedValue)) {
            Text = postedValue;
            return true;
         }

         return false;
      }

      public virtual void RaisePostDataChangedEvent() {
         OnTextChanged(EventArgs.Empty);
      }

      protected virtual void OnTextChanged(EventArgs e) {
         if (TextChanged != null)
            TextChanged(this,e);
      }

      protected override void Render(HtmlTextWriter output) {
         output.Write("<INPUT type= text name = "+this.UniqueID
            + " value = " + this.Text + " >");
      }
   }
}
Imports System.Web
Imports System.Web.UI
Imports System.Collections
Imports System.Collections.Specialized

Namespace CustomWebFormsControls
    
    <System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> Public Class MyTextBox
        Inherits Control
        Implements IPostBackDataHandler
        
        
        Public Property Text() As String
            Get
                Return CType(Me.ViewState("Text"), String)
            End Get
            
            Set
                Me.ViewState("Text") = value
            End Set
        End Property
        
        
        Public Event TextChanged As EventHandler
        
        
        Public Overridable Shadows Function LoadPostData( _
        postDataKey As String, _
        postCollection As System.Collections.Specialized.NameValueCollection) _
        As Boolean Implements IPostBackDataHandler.LoadPostData
            
            Dim presentValue As String = Text
            Dim postedValue As String = postCollection(postDataKey)
            
            If presentValue Is Nothing Or Not presentValue.Equals(postedValue) Then
                Text = postedValue
                Return True
            End If
            
            Return False
        End Function
        
        
        Public Overridable Shadows Sub RaisePostDataChangedEvent() _
        Implements IPostBackDataHandler.RaisePostDataChangedEvent
        
            OnTextChanged(EventArgs.Empty)
        End Sub
        
        
        Protected Overridable Sub OnTextChanged(e As EventArgs)
            RaiseEvent TextChanged(Me, e)
        End Sub
        
        
        Protected Overrides Sub Render(output As HtmlTextWriter)
            output.Write("<INPUT type= text name = " & Me.UniqueID & _
                " value = " & Me.Text & " >")
        End Sub
        
    End Class
    
End Namespace

注釈

クライアントによってサーバーに IPostBackDataHandler ポストバックされるフォーム データを調べる必要があるサーバー コントロールを作成するときは、 インターフェイスを実装する必要があります。 このインターフェイスで定義されるコントラクトを使用すると、サーバー コントロールはポストバックの結果として状態を変更する必要があるかどうかを判断し、適切なイベントを発生させます。 詳細については、「 ASP.NET Web フォーム ページでのサーバー イベント処理」を参照してください。

メソッド

LoadPostData(String, NameValueCollection)

クラスによって実装された場合、ASP.NET サーバー コントロールのポストバック データを処理します。

RaisePostDataChangedEvent()

クラスによって実装された場合、コントロールの状態が変化したことを ASP.NET アプリケーションに通知するために、サーバー コントロールにシグナルを送信します。

適用対象

こちらもご覧ください