次の方法で共有


DataBinding クラス

定義

Microsoft Visual Studio などの RAD (Rapid Application Development) デザイナーがデザイン時にデータ バインディング式を作成できるようにする ASP.NET サーバー コントロールの単一のデータ バインディング式に関する情報を格納します。 このクラスは継承できません。

public ref class DataBinding sealed
public sealed class DataBinding
type DataBinding = class
Public NotInheritable Class DataBinding
継承
DataBinding

次のコード例では、 オブジェクトをDataBinding作成し、 の値を持つパラメーターを持つpropertyNameコントロールのコレクション内の既存のDataBindingCollectionTextオブジェクトと等しく設定します。 コレクションに の値をDataBinding持つ オブジェクトがpropertyName含まれている場合、このコードは オブジェクトの プロパティの値を返しますExpressionText このようなオブジェクトがない場合は、空の文字列 ("") を返します。

// Create the custom class that accesses the DataBinding and
// DataBindingCollection classes at design time.
public class SimpleDesigner : System.Web.UI.Design.ControlDesigner
{
    // Create a Text property with accessors that obtain 
    // the property value from and set the property value
    // to the Text key in the DataBindingCollection class.
    public string Text
    {
        get
        {
            DataBinding myBinding = DataBindings["Text"];
            if (myBinding != null)
            {
                return myBinding.Expression;
            }
            return String.Empty;
        }
        set
        {

            if ((value == null) || (value.Length == 0))
            {
                DataBindings.Remove("Text");
            }
            else
            {

                DataBinding binding = DataBindings["Text"];

                if (binding == null)
                {
                    binding = new DataBinding("Text", typeof(string), value);
                }
                else
                {
                    binding.Expression = value;
                }
                // Call the DataBinding constructor, then add
                // the initialized DataBinding object to the 
                // DataBindingCollection for this custom designer.
                DataBinding binding1 = (DataBinding)DataBindings.SyncRoot;
                DataBindings.Add(binding);
                DataBindings.Add(binding1);
            }
            PropertyChanged("Text");
        }
    }
    protected void PropertyChanged(string propName)
    {
        IControlDesignerTag myHtmlControlDesignBehavior = this.Tag;
        
        DataBindingCollection myDataBindingCollection;
        DataBinding myDataBinding1, myDataBinding2;
        String myStringReplace1, myDataBindingExpression1, removedBinding, removedBindingAfterReplace, myDataBindingExpression2, myStringReplace2;
        string[] removedBindings1, removedBindings2;
        Int32 temp;

        if (myHtmlControlDesignBehavior == null)
            return;
        // Use the DataBindingCollection constructor to 
        // create the myDataBindingCollection1 object.
        // Then set this object equal to the
        // DataBindings property of the control created
        // by this custom designer.
        DataBindingCollection myDataBindingCollection1 = new DataBindingCollection();
        myDataBindingCollection1 = myDataBindingCollection = DataBindings;
        if (myDataBindingCollection.Contains(propName))
        {
            myDataBinding1 = myDataBindingCollection[propName];
            myStringReplace1 = propName.Replace(".", "-");
            if (myDataBinding1 == null)
            {
                myHtmlControlDesignBehavior.RemoveAttribute(myStringReplace1);
                return;
            }
            // DataBinding is not null.
            myDataBindingExpression1 = String.Concat("<%#", myDataBinding1.Expression, "%>");
            myHtmlControlDesignBehavior.SetAttribute(myStringReplace1, myDataBindingExpression1);
            int index = myStringReplace1.IndexOf("-");
        }
        else
        {
            // Use the DataBindingCollection.RemovedBindings 
            // property to set the value of the removedBindings
            // arrays.
            removedBindings2 = removedBindings1 = DataBindings.RemovedBindings;
            temp = 0;
            while (removedBindings2.Length > temp)
            {
                removedBinding = removedBindings2[temp];
                removedBindingAfterReplace = removedBinding.Replace('.', '-');
                myHtmlControlDesignBehavior.RemoveAttribute(removedBindingAfterReplace);
                temp = temp + 1;
            }
        }
        // Use the DataBindingCollection.GetEnumerator method
        // to iterate through the myDataBindingCollection object
        // and write the PropertyName, PropertyType, and Expression
        // properties to a file for each DataBinding object
        // in the MyDataBindingCollection object. 
        myDataBindingCollection = DataBindings;
        IEnumerator myEnumerator = myDataBindingCollection.GetEnumerator();

        while (myEnumerator.MoveNext())
        {
            myDataBinding2 = (DataBinding)myEnumerator.Current;
            String dataBindingOutput1, dataBindingOutput2, dataBindingOutput3;
            dataBindingOutput1 = String.Concat("The property name is ", myDataBinding2.PropertyName);
            dataBindingOutput2 = String.Concat("The property type is ", myDataBinding2.PropertyType.ToString(), "-", dataBindingOutput1);
            dataBindingOutput3 = String.Concat("The expression is ", myDataBinding2.Expression, "-", dataBindingOutput2);
            WriteToFile(dataBindingOutput3);

            myDataBindingExpression2 = String.Concat("<%#", myDataBinding2.Expression, "%>");
            myStringReplace2 = myDataBinding2.PropertyName.Replace(".", "-");
            myHtmlControlDesignBehavior.SetAttribute(myStringReplace2, myDataBindingExpression2);
            int index = myStringReplace2.IndexOf('-');
        }// while loop ends
    }
    public void WriteToFile(string input)
    {
        // The WriteToFile custom method writes
        // the values of the DataBinding properties
        // to a file on the C drive at design time.
        StreamWriter myFile = File.AppendText("C:\\DataBindingOutput.txt");
        ASCIIEncoding encoder = new ASCIIEncoding();
        byte[] ByteArray = encoder.GetBytes(input);
        char[] CharArray = encoder.GetChars(ByteArray);
        myFile.WriteLine(CharArray, 0, input.Length);
        myFile.Close();
    }
}
' Create the custom class that accesses the DataBinding and
' DataBindingCollection classes at design time.

Public Class SimpleDesigner
    Inherits System.Web.UI.Design.ControlDesigner
    ' Create a Text property with accessors that obtain 
    ' the property value from and set the property value
    ' to the Text key in the DataBindingCollection class.

    Public Property [Text]() As String
        Get
            Dim myBinding As DataBinding = DataBindings("Text")
            If Not (myBinding Is Nothing) Then
                Return myBinding.Expression
            End If
            Return String.Empty
        End Get
        Set(ByVal value As String)

            If value Is Nothing OrElse value.Length = 0 Then
                DataBindings.Remove("Text")
            Else

                Dim binding As DataBinding = DataBindings("Text")

                If binding Is Nothing Then
                    binding = New DataBinding("Text", GetType(String), value)
                Else
                    binding.Expression = value
                End If
                ' Call the DataBinding constructor, then add
                ' the initialized DataBinding object to the 
                ' DataBindingCollection for this custom designer.
                Dim binding1 As DataBinding = CType(DataBindings.SyncRoot, DataBinding)
                DataBindings.Add(binding)
                DataBindings.Add(binding1)
            End If
            PropertyChanged("Text")
        End Set
    End Property

    Protected Sub PropertyChanged(ByVal propName As String)
        Dim myHtmlControlDesignBehavior As IControlDesignerTag = Me.Tag
        Dim myDataBindingCollection As DataBindingCollection
        Dim myDataBinding1, myDataBinding2 As DataBinding
        Dim myStringReplace1, myDataBindingExpression1, removedBinding, removedBindingAfterReplace, myDataBindingExpression2, myStringReplace2 As [String]
        Dim removedBindings1(), removedBindings2() As String
        Dim temp As Int32

        If myHtmlControlDesignBehavior Is Nothing Then
            Return
        End If

        myDataBindingCollection = DataBindings
        ' Use the DataBindingCollection constructor to 
        ' create the myDataBindingCollection1 object.
        ' Then set this object equal to the
        ' DataBindings property of the control created
        ' by this custom designer.
        Dim myDataBindingCollection1 As New DataBindingCollection()
        myDataBindingCollection1 = DataBindings
        myDataBindingCollection = DataBindings
        If (myDataBindingCollection.Contains(propName)) Then
            myDataBinding1 = myDataBindingCollection(propName)
            myStringReplace1 = propName.Replace(".", "-")
            If myDataBinding1 Is Nothing Then
                myHtmlControlDesignBehavior.RemoveAttribute(myStringReplace1)
                Return
            End If
            ' DataBinding is not null.
            myDataBindingExpression1 = [String].Concat("<%#", myDataBinding1.Expression, "%>")
            myHtmlControlDesignBehavior.SetAttribute(myStringReplace1, myDataBindingExpression1)
            Dim index As Integer = myStringReplace1.IndexOf("-")
        Else
            ' Use the DataBindingCollection.RemovedBindings 
            ' property to set the value of the removedBindings
            ' arrays.
            removedBindings1 = DataBindings.RemovedBindings
            removedBindings2 = DataBindings.RemovedBindings
            temp = 0
            While removedBindings2.Length > temp
                removedBinding = removedBindings2(temp)
                removedBindingAfterReplace = removedBinding.Replace("."c, "-"c)
                myHtmlControlDesignBehavior.RemoveAttribute(removedBindingAfterReplace)
                temp = temp & 1
            End While
        End If
        ' Use the DataBindingCollection.GetEnumerator method
        ' to iterate through the myDataBindingCollection object
        ' and write the PropertyName, PropertyType, and Expression
        ' properties to a file for each DataBinding object
        ' in the MyDataBindingCollection object. 
        myDataBindingCollection = DataBindings
        Dim myEnumerator As IEnumerator = myDataBindingCollection.GetEnumerator()

        While myEnumerator.MoveNext()
            myDataBinding2 = CType(myEnumerator.Current, DataBinding)
            Dim dataBindingOutput1, dataBindingOutput2, dataBindingOutput3 As [String]
            dataBindingOutput1 = [String].Concat("The property name is ", myDataBinding2.PropertyName)
            dataBindingOutput2 = [String].Concat("The property type is ", myDataBinding2.PropertyType.ToString(), "-", dataBindingOutput1)
            dataBindingOutput3 = [String].Concat("The expression is ", myDataBinding2.Expression, "-", dataBindingOutput2)
            WriteToFile(dataBindingOutput3)

            myDataBindingExpression2 = [String].Concat("<%#", myDataBinding2.Expression, "%>")
            myStringReplace2 = myDataBinding2.PropertyName.Replace(".", "-")
            myHtmlControlDesignBehavior.SetAttribute(myStringReplace2, myDataBindingExpression2)
            Dim index As Integer = myStringReplace2.IndexOf("-"c)
        End While ' while loop ends
    End Sub
    Public Sub WriteToFile(ByVal input As String)
        ' The WriteToFile custom method writes
        ' the values of the DataBinding properties
        ' to a file on the C drive at design time.
        Dim myFile As StreamWriter = File.AppendText("C:\DataBindingOutput.txt")
        Dim encoder As New ASCIIEncoding()
        Dim ByteArray As Byte() = encoder.GetBytes(input)
        Dim CharArray As Char() = encoder.GetChars(ByteArray)
        myFile.WriteLine(CharArray, 0, input.Length)
        myFile.Close()
    End Sub
End Class

注釈

サーバー コントロール内の各データ バインディング式は、デザイン時に クラスの DataBinding インスタンスによって表されます。 1 つ以上のデータ バインディング式を含むサーバー コントロールには、 オブジェクトを DataBindingCollection 含む オブジェクトがあります DataBinding 。 このコレクションには、 インターフェイスを実装する クラスをControlIDataBindingsAccessor介してアクセスできます。 カスタム RAD デザイナーを作成するときは、その実装を使用してコレクションにアクセスします。 サーバー コントロールに関連付けられているオブジェクト DataBinding または DataBindingCollection オブジェクトは、デザイン時にのみ存在します。 これらは実行時に存在しないため、実行時にはアクセスできません。

コンストラクター

DataBinding(String, Type, String)

DataBinding クラスの新しいインスタンスを初期化します。

プロパティ

Expression

評価されるデータ連結式を取得します。

PropertyName

データを連結する先の ASP.NET サーバー コントロール プロパティの名前を取得します。

PropertyType

データ連結 ASP.NET サーバー コントロール プロパティの .NET Framework 型を取得します。

メソッド

Equals(Object)

指定したオブジェクトが現在のオブジェクトと同じ DataBinding クラスのインスタンスかどうかを判断します。

GetHashCode()

DataBinding オブジェクトのインスタンスのハッシュ コードを取得します。

GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

適用対象

こちらもご覧ください