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

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top