Principales respuestas
Como enlazar DataPropertyName del DataGridView a una Propiedad de una clase de Segundo Nivel

Pregunta
-
Saludos, espero esten bien.
Hay alguna forma de enlazar el DataPropertyName del Datagridview con una propiedad de segundo nivel???? Me explico tengo 2 clases
public class Contact { public string Name { get; set; } public int Age { get; set; } public Address Address { get; set; } }
//Clase con propiedades de segundo nivel public class Address { public string Street { get; set; } public string City { get; set; }
}
//en el evento load del formprivatevoid Form1_Load(object sender, EventArgs e) { dataGridView1.AutoGenerateColumns = False; dataGridView1.DataSource = Contactos();//metodo que utilizo para devolver los Contact
//esto lo puedo hacer bien, ya que son propiedades de primer nivel
DataGridViewTextBoxColumn columna = dataGridView1.Columns["Name"] as DataGridViewTextBoxColumn;
columna.DataPropertyName = "Name";//Pero si quiero acceder a una propiedad de segundo nivel desde el DataPropertyName
DataGridViewTextBoxColumn columna1 = dataGridView1.Columns["Street"] as DataGridViewTextBoxColumn;
columna.DataPropertyName = ??????;//que o como se coloca aqui "Address.Street"(no funciona) y me aparece en la columna del DatagridView namespace.Address.}
espero haber sido lo mas explicito posible...Agradezco la colaboracion, por ahi estuve revisando el siguiente enlace, pero si tiene o sugieren otra forma de hacerlo...vale (http://blogs.msdn.com/b/msdnts/archive/2007/01/19/how-to-bind-a-datagridview-column-to-a-second-level-property-of-a-data-source.aspx)
Respuestas
-
puedes usar
DataGridViewTextBoxColumn columna1 = dataGridView1.Columns["Street"] as DataGridViewTextBoxColumn;
columna.DataPropertyName = Address;pero si haces
public class Address { public string Street { get; set; } public string City { get; set; } public override string ToString(){ return this.Street; } }
de esta forma tomara el ToString() para mostrar en ese campoLeandro Tuttini
Blog
Buenos Aires
Argentina- Marcado como respuesta Johan0920 jueves, 17 de mayo de 2012 14:54
Todas las respuestas
-
puedes usar
DataGridViewTextBoxColumn columna1 = dataGridView1.Columns["Street"] as DataGridViewTextBoxColumn;
columna.DataPropertyName = Address;pero si haces
public class Address { public string Street { get; set; } public string City { get; set; } public override string ToString(){ return this.Street; } }
de esta forma tomara el ToString() para mostrar en ese campoLeandro Tuttini
Blog
Buenos Aires
Argentina- Marcado como respuesta Johan0920 jueves, 17 de mayo de 2012 14:54
-
Gracias Leandro, como siempre tu aporte fue valioso, algo que hice para devolver las dos fue de esta foma
public class Address { public string Street { get; set; } public string City { get; set; } public override string ToString(){ return this.Street + " , " + this.City; } }
claro en la columna del DataGridView me aparece con el formato (Street , City ) ej: "Calle Sancho , Cartagena de Indias" .
Gracias
-