DataBinding Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Contiene información sobre una única expresión de enlace de datos en un control de servidor ASP.NET, que permite que diseñadores de desarrollo rápido de aplicaciones (RAD), como Microsoft Visual Studio, creen expresiones de enlace de datos en tiempo de diseño. Esta clase no puede heredarse.
public ref class DataBinding sealed
public sealed class DataBinding
type DataBinding = class
Public NotInheritable Class DataBinding
- Herencia
-
DataBinding
Ejemplos
En el ejemplo de código siguiente se crea un DataBinding objeto y se establece igual a un objeto existente en la colección del DataBindingCollection control que tiene un propertyName
parámetro con un valor de Text
. Si la colección contiene un DataBinding objeto con un propertyName
valor de Text
, este código devuelve el valor de la propiedad del Expression objeto. Si no hay ningún objeto de este tipo, devuelve una cadena vacía ("").
// 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
Comentarios
Cada expresión de enlace de datos de un control de servidor se representa en tiempo de diseño mediante una instancia de la DataBinding clase . Cualquier control de servidor que contenga una o varias expresiones de enlace de datos tiene un DataBindingCollection objeto que contiene los DataBinding objetos . Esta colección es accesible a través de la Control clase que implementa la IDataBindingsAccessor interfaz . Al crear un diseñador RAD personalizado, use esa implementación para acceder a la colección. Todos DataBinding los objetos o DataBindingCollection asociados a un control de servidor solo existen en tiempo de diseño. No existen en tiempo de ejecución y, por lo tanto, no son accesibles durante el tiempo de ejecución.
Constructores
DataBinding(String, Type, String) |
Inicializa una nueva instancia de la clase DataBinding. |
Propiedades
Expression |
Obtiene o establece la expresión de enlace a datos que se va a evaluar. |
PropertyName |
Obtiene el nombre de la propiedad de control de servidor ASP.NET a la que se van a enlazar los datos. |
PropertyType |
Obtiene el tipo .NET Framework de la propiedad de control de servidor ASP.NET enlazada a datos. |
Métodos
Equals(Object) |
Determina si el objeto especificado es la misma instancia de la clase DataBinding que el objeto actual. |
GetHashCode() |
Recupera el código hash para una instancia del objeto DataBinding. |
GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
MemberwiseClone() |
Crea una copia superficial del Object actual. (Heredado de Object) |
ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |