2009-09-15 11 views
6

Usando el método Bind() de Asp.net, ¿cómo me enlace al objeto en sí, no a una de sus propiedades?Enlace al objeto en sí, no una de sus propiedades

+1

Por favor especificar más claramente qué es exactamente lo desea unirse. Para un control de lista ... ?? – Juri

+0

Estoy vinculando a un objeto en un control FromView. Dentro de FormView tengo un UserControl que define una propiedad que es del tipo que está vinculado. Por ejemplo, imagine una clase llamada Nombre que define dos propiedades, Nombre y Apellido. Una instancia de la clase Name está vinculada a FormView. No deseo pasar FirstName o LastName a mi UserControl llamando a Bind ("FirstName") y Bind ("LastName"), quiero pasar la instancia de Name a mi UserControl. – Ryan

Respuesta

2

Terminé trabajando en esto agregando una propiedad llamada SelfReference que simplemente devuelve this. Si alguien lee esto y tiene una mejor solución, me gustaría escucharlo.

1

No estoy seguro de qué es exactamente lo que quiere vincular. Lo único que tendría sentido para mí en este momento es vincular a algún control de UI, por ejemplo, un control DropDown.

Generalmente existen algunas propiedades de texto para el valor que se muestra y propiedades de valor para que el valor real funcione como identificador. En el menú desplegable

  • DataTextField
  • DataValueField

Hay que especificar DataTextField = "Firstname" y DataValueField = "Id" dado que tiene un objeto que tiene propiedades "Nombre" y "ID".

En las listas puede usar la función Eval directamente en su código ASPX o puede agregar controles del lado del servidor (es decir, Literales, Etiquetas) dentro de las plantillas de lista e implementar el evento ItemDataBound (tomando el Repeater como ejemplo). Here's un buen ejemplo que ilustra esto más.

Esperanza pude ayudar un poco;)

2

Creo que lo que Ryan quiere decir aquí, como si tiene que un objeto como éste

public class Person 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 

Y si enlaza Person objeto a cualquier lugar de GridView o Repeater en cualquier DataSource, solo se vincula a Person y obtiene un valor de enlace predeterminado de una de sus propiedades. apoyo que tenemos una variable de tipo Ryan de Person así que quiero para obtener el valor de la variable de llamar <%# Eval("Ryan") %> no <%# Eval("Ryan.FirstName") %>

I intentado poner un atributo DefaultBindingProperty para la clase, pero que no está funcionando

[System.ComponentModel.DefaultBindingProperty("FirstName")] 
public class Person 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 

También lo hace ¿Alguien sabe cómo hacerlo correctamente?

+0

Sí. Quiero vincular el objeto, no una de sus propiedades. – Ryan

0

Descubrí una manera de alguna manera. En realidad se trata de "http://msdn.microsoft.com/en-us/library/ms752347.aspx"

ListBox ItemsSource="{**Binding**}" IsSynchronizedWithCurrentItem="true"/> 

en cuenta que aunque hemos hecho hincapié en que el camino hacia el valor a utilizar es uno de los cuatro componentes necesarios de una unión, en los escenarios de los que desea unirse a un entero objeto, el valor a usar sería el mismo que el objeto fuente de enlace. En esos casos, es aplicable para no especificar una ruta. Consideremos el siguiente ejemplo:

XAML Copiar

1

Usted puede utilizar Container.DataItem lugar: Item='<%# Container.DataItem %>'

Cuestiones relacionadas