ASP.NET DataGrid dans un répéteur
Question
J'ai une table à deux colonnes:
CommunityID
PersonID
Et A "Personnes" table qui a (entre autres):
FirstName
LastName
J'aimerais afficher un DataGrid différent pour chaque communauté, chaque grille de données ne contenant que les personnes faisant partie de cette communauté. Je voudrais faire cela sans utiliser 4 SqlDataSources séparés.
Un répéteur ressemble à un bon moyen, avec un DataGrid à l'intérieur de ItemTemplate, mais je n'arrive pas à comprendre pourquoi il fonctionne avec les différentes valeurs pour chaque répétition.
Si quelqu'un a des suggestions sur de meilleures façons de le faire, je vous en serais très reconnaissant, car c'est l'une de mes premières incursions dans le monde pour ASP.NET
Merci,
Mike
La solution
Personnellement, je n’utiliserais pas de contrôle DataGrid, car il restreint votre contrôle sur votre sortie et a été remplacé par le nouveau GridView
& amp; ListView
contrôles (bien que DataGrid soit non obsolète , alors n'hésitez pas libre de l'utiliser si vous voulez). Vous voudrez peut-être envisager d'utiliser les solutions de rechange, mais vous n'êtes pas obligé de le faire.
Pour faire ce que vous cherchez, vous devez utiliser les balises suivantes:
<asp:Repeater runat="server" ID="myRepeater"
onitemdatabound="Repeater_ItemDataBound">
<ItemTemplate>
<asp:DataGrid runat="server" ID="myDataGrid">
</asp:DataGrid>
</ItemTemplate>
</asp:Repeater>
Ensuite, vous allez câbler le balisage avec le code-behind suivant:
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 clé est la de la répétition. code> ItemDataBound , méthode appelée à chaque fois qu'une ligne de répéteur est créée. C'est ici que vous pouvez lier des données à votre source DataGrid. Vous pouvez mettre toute logique dont vous avez besoin dans cette méthode en utilisant RepeaterItemEventArgs
pour accéder à l’élément de données que vous avez lié à votre Repeater.