asp.net datagrid repeater

ASP.NET DataGrid dentro de un repetidor



repeater (1)

Personalmente, no utilizaría un control DataGrid, ya que restringe el control sobre su salida y han sido reemplazados por los controles GridView y ListView más nuevos (aunque DataGrid no está obsoleto, así que siéntase libre de usarlo si lo desea). Es posible que desee considerar el uso de las alternativas, pero no está obligado a hacerlo.

Para hacer lo que está buscando, tendría un marcado como el siguiente:

<asp:Repeater runat="server" ID="myRepeater" onitemdatabound="Repeater_ItemDataBound"> <ItemTemplate> <asp:DataGrid runat="server" ID="myDataGrid"> </asp:DataGrid> </ItemTemplate> </asp:Repeater>

A continuación, conectará el marcado con el siguiente código subyacente:

protected void Page_Load(object sender, EventArgs e) { myRepeater.DataSource = new Object[0]; myRepeater.DataBind(); } protected void Repeater_ItemDataBound(object sender, RepeaterItemEventArgs e) { DataGrid dg = (DataGrid)e.Item.FindControl("myDataGrid"); object o = e.Item.DataItem;// Cast the DataItem as whatever // your Repeater''s DataSource is // ... // Do whatever you need to get the // data source for your DataGrid here // ... dg.DataSource = DataGridSourceObjectHere; dg.DataBind(); }

La clave es el evento ItemDataBound del repetidor, que es el método que se llama cada vez que se crea una fila de repetidor. Aquí es donde puede enlazar datos con su fuente DataGrid. Puedes poner cualquier lógica que necesites dentro de este método usando el parámetro RepeaterItemEventArgs para acceder al elemento de datos que vinculaste a tu Repeater.

Tengo una tabla que tiene dos columnas:

CommunityID PersonID

Y una tabla de "Personas" que tiene (entre otras cosas):

FirstName LastName

Me gustaría mostrar un DataGrid diferente para cada comunidad, cada grid de datos tiene solo las personas que forman parte de esa comunidad. Me gustaría hacer esto sin usar 4 SqlDataSources separados.

Un repetidor parece una buena manera, con un DataGrid dentro de ItemTemplate, pero parece que no puedo entender si funciona para que funcione con los diferentes valores para cada repetición.

Si alguien tiene alguna sugerencia sobre mejores formas de hacer esto, estaría muy agradecido, ya que esta es una de mis primeras incursiones en el mundo para ASP.NET

Gracias,

Micro