Para mí, la forma en que estás describiendo los datos en realidad no se presta muy bien para a DataGrid
. Este control funciona mejor para los datos que planea mostrar en un estilo tabular estándar, donde los nombres de las columnas se encuentran en la parte superior y luego muestra la (s) fila (s) de valores debajo. Tampoco me queda claro si pretenden vincular una o más instancias de su objeto (que llamaré Person
por el momento) a la interfaz de usuario.
Vamos a seguir adelante y definir ese objeto:
public class Person {
public String Name { get; set; }
public String LastName { get; set; }
public int Age { get; set; }
public DateTime BirthDate { get; set; }
}
para unirse a una sola instancia de Person
a su interfaz de usuario, un simple tabla HTML debería funcionar bien. Estoy usando TextBoxes
para mostrar los valores aquí, pero si no necesita editarlos, simplemente use Label
s en su lugar.
<table>
<tr><td>Name:</td><td><asp:TextBox ID="txtName" runat="server" /></td></tr>
<tr><td>Last Name:</td><td><asp:TextBox ID="txtLastName" runat="server" /></td></tr>
<tr><td>Age:</td><td><asp:TextBox ID="txtAge" runat="server" /></td></tr>
<tr><td>Birthdate:</td><td><asp:TextBox ID="txtBirthDate" runat="server" /></td></tr>
</table>
Es bastante trivial en este punto para enlazar las propiedades de Person
con sus respectivos controles en la página utilizando el código subyacente.
Si desea utilizar este mismo diseño para mostrar varias instancias de Person
en una página, vaya con ASP.net Repeater.El margen de beneficio para este se vería más como:
<asp:Repeater ID="repPeople" runat="server">
<ItemTemplate>
<table>
<tr><td>Name:</td><td><asp:TextBox ID="txtName" runat="server" Text='<%# Eval("Name") %>' /></td></tr>
<tr><td>Last Name:</td><td><asp:TextBox ID="txtLastName" runat="server" Text='<%# Eval("LastName") %>' /></td></tr>
<tr><td>Age:</td><td><asp:TextBox ID="txtAge" runat="server" Text='<%# Eval("Age") %>' /></td></tr>
<tr><td>Birthdate:</td><td><asp:TextBox ID="txtBirthDate" runat="server" Text='<%# String.Format("{0:d}", Eval("BirthDate")) %>' /></td></tr>
</table>
</ItemTemplate>
</asp:Repeater>
En el código subyacente, que acaba de unirse a una colección de Person
a la propiedad DataSource
en el Repeater
:
protected void Page_Load(object sender, EventArgs e) {
// A simple example using Page_Load
List<Person> people = new List<Person>();
for (int i = 0; i < 10; i++) {
people.Add(new Person() {Name = "Test", Age = 10, BirthDate=DateTime.Now, LastName = "Test"});
}
if (!IsPostBack) {
repPeople.DataSource = people;
repPeople.DataBind();
}
}
Nota: Usted podría lograr un diseño similar utilizando CSS en lugar de tablas, sin embargo, los mismos principios se aplican entre la vinculación de un solo objeto frente a múltiples. Simplemente reemplace el diseño de la tabla en este ejemplo con cualquier marcado que defina en última instancia.
Visual Studio es un IDE que se utiliza con muchos idiomas, ¿de qué estás hablando? Una mesa en qué? ¿Cómo intentas consultarlo? – Oded
@Oded es un proyecto C#/aspx. DB es SQL. Los datos procedentes de SQL que se colocarán en A, B, C, D ... están en un conjunto de datos. –
aspx ... ¿WebForms o MVC? – Oded