DataBinding-Klasse
Enthält Informationen über einen einzelnen Datenbindungsausdruck in einem ASP.NET-Serversteuerelement, der es RAD-Designern (Rapid Application Development) wie Microsoft Visual Studio ermöglicht, Datenbindungsausdrücke zur Entwurfszeit zu erstellen. Diese Klasse kann nicht vererbt werden.
Namespace: System.Web.UI
Assembly: System.Web (in system.web.dll)
Syntax
'Declaration
Public NotInheritable Class DataBinding
'Usage
Dim instance As DataBinding
public sealed class DataBinding
public ref class DataBinding sealed
public final class DataBinding
public final class DataBinding
Hinweise
Jeder Datenbindungsausdruck in einem Serversteuerelement wird zur Entwurfszeit durch eine Instanz der DataBinding-Klasse dargestellt. Jedes Serversteuerelement mit mindestens einem Datenbindungsausdruck verfügt über ein DataBindingCollection-Objekt, das die DataBinding-Objekte enthält. Mithilfe der Control-Klassenimplementierung der IDataBindingsAccessor-Schnittstelle können Sie auf diese Auflistung zugreifen. Verwenden Sie beim Erstellen eines benutzerdefinierten RAD-Designers diese Implementierung, um auf die Auflistung zuzugreifen. Alle einem Serversteuerelement zugeordneten DataBinding-Objekte oder DataBindingCollection-Objekte sind nur zur Entwurfszeit vorhanden. Zur Laufzeit sind diese Objekte nicht vorhanden, und daher kann zur Laufzeit auch nicht darauf zugegriffen werden.
Beispiel
Im folgenden Codebeispiel wird ein DataBinding-Objekt erstellt, und dieses wird gleichgesetzt mit einem vorhandenen Objekt in der DataBindingCollection-Auflistung des Steuerelements, das über einen propertyName-Parameter mit dem Wert Text
verfügt. Wenn die Auflistung ein DataBinding-Objekt mit einem propertyName-Wert von Text
enthält, gibt dieser Code den Wert der Expression-Eigenschaft des Objekts zurück. Wenn kein solches Objekt vorhanden ist, wird eine leere Zeichenfolge ("") zurückgegeben.
' 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 'OnBindingsCollectionChanged
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 'WriteToFile
End Class 'SimpleDesigner
// 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 extends 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.
/** @property
*/
public String get_Text()
{
DataBinding myBinding = get_DataBindings().get_Item("Text");
if (myBinding != null) {
return myBinding.get_Expression();
}
return("");
} //get_Text
/** @property
*/
public void set_Text(String value)
{
if (value == null || value.get_Length() == 0) {
get_DataBindings().Remove("Text");
}
else {
DataBinding binding = get_DataBindings().get_Item("Text");
if (binding == null) {
binding = new DataBinding("Text", String.class.ToType(), value);
}
else {
binding.set_Expression(value);
}
// Call the DataBinding constructor, then add
// the initialized DataBinding object to the
// DataBindingCollection for this custom designer.
DataBinding binding1 = (DataBinding)(get_DataBindings().
get_SyncRoot());
get_DataBindings().Add(binding);
get_DataBindings().Add(binding1);
}
OnBindingsCollectionChanged("Text");
} //set_Text
// Override the OnBindingsCollectionChanged class to create
// the data-binding expression and associate it with
// a property on the control created by the designer.
protected void OnBindingsCollectionChanged(String propName)
{
IHtmlControlDesignerBehavior myHtmlControlDesignBehavior =
get_Behavior();
DataBindingCollection myDataBindingCollection;
DataBinding myDataBinding1, myDataBinding2;
String myStringReplace1, myDataBindingExpression1, removedBinding,
removedBindingAfterReplace, myDataBindingExpression2, myStringReplace2;
String removedBindings1[], removedBindings2[];
int 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 =
get_DataBindings());
if (propName != null) {
myDataBinding1 = myDataBindingCollection.get_Item(propName);
myStringReplace1 = propName.Replace(".", "-");
if (myDataBinding1 == null) {
myHtmlControlDesignBehavior.RemoveAttribute(myStringReplace1,
true);
return;
}
// DataBinding is not null.
myDataBindingExpression1 = String.Concat("<%#", myDataBinding1.
get_Expression(), "%>");
myHtmlControlDesignBehavior.SetAttribute(myStringReplace1,
myDataBindingExpression1, true);
int index = myStringReplace1.IndexOf("-");
}
else {
// Use the DataBindingCollection.RemovedBindings
// property to set the value of the removedBindings
// arrays.
removedBindings2 = (removedBindings1 = get_DataBindings().
get_RemovedBindings());
temp = 0;
while (removedBindings2.length > temp) {
removedBinding = removedBindings2[temp];
removedBindingAfterReplace = removedBinding.Replace('.', '-');
myHtmlControlDesignBehavior.RemoveAttribute(
removedBindingAfterReplace, true);
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 = get_DataBindings();
IEnumerator myEnumerator = myDataBindingCollection.GetEnumerator();
while (myEnumerator.MoveNext()) {
myDataBinding2 = (DataBinding)(myEnumerator.get_Current());
String dataBindingOutput1, dataBindingOutput2, dataBindingOutput3;
dataBindingOutput1 = String.Concat("The property name is ",
myDataBinding2.get_PropertyName());
dataBindingOutput2 = String.Concat("The property type is ",
myDataBinding2.get_PropertyType().ToString(), "-",
dataBindingOutput1);
dataBindingOutput3 = String.Concat("The expression is ",
myDataBinding2.get_Expression(), "-", dataBindingOutput2);
WriteToFile(dataBindingOutput3);
myDataBindingExpression2 = String.Concat("<%#", myDataBinding2.
get_Expression(), "%>");
myStringReplace2 = myDataBinding2.get_PropertyName().
Replace(".", "-");
myHtmlControlDesignBehavior.SetAttribute(myStringReplace2,
myDataBindingExpression2, true);
int index = myStringReplace2.IndexOf("-");
} // while loop ends
} //OnBindingsCollectionChanged
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();
ubyte byteArray[] = encoder.GetBytes(input);
char charArray[] = encoder.GetChars(byteArray);
myFile.WriteLine(charArray, 0, input.get_Length());
myFile.Close();
} //WriteToFile
Vererbungshierarchie
System.Object
System.Web.UI.DataBinding
Threadsicherheit
Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.
Plattformen
Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
Siehe auch
Referenz
DataBinding-Member
System.Web.UI-Namespace
DataBinder-Klasse
DataBindingCollection
IDataBindingsAccessor