Dans ma page .aspx J'ai mon DataList:Comment trouver une étiquette dans DataList qui est définie sur True
<asp:DataList ID="DataList1" runat="server" DataKeyField="ProductSID"
DataSourceID="SqlDataSource1" onitemcreated="DataList1_ItemCreated"
RepeatColumns="3" RepeatDirection="Horizontal" Width="1112px">
<ItemTemplate>
ProductSID:
<asp:Label ID="ProductSIDLabel" runat="server" Text='<%# Eval("ProductSID") %>' />
<br />
ProductSKU:
<asp:Label ID="ProductSKULabel" runat="server" Text='<%# Eval("ProductSKU") %>' />
<br />
ProductImage1:
<asp:Label ID="ProductImage1Label" runat="server" Text='<%# Eval("ProductImage1") %>' />
<br />
ShowLive:
<asp:Label ID="ShowLiveLabel" runat="server" Text='<%# Eval("ShowLive") %>' />
<br />
CollectionTypeID:
<asp:Label ID="CollectionTypeIDLabel" runat="server" Text='<%# Eval("CollectionTypeID") %>' />
<br />
CollectionHomePage:
<asp:Label ID="CollectionHomePageLabel" runat="server" Text='<%# Eval("CollectionHomePage") %>' />
<br />
<br />
</ItemTemplate>
</asp:DataList>
Et dans mon code derrière l'utilisation de l'événement ItemCreated pour trouver et régler la label.backcolor propriété. (Note: J'utilise une classe FindControl récursive)
protected void DataList1_ItemCreated(object sender, DataListItemEventArgs e)
{
foreach (DataListItem item in DataList1.Items)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Label itemLabel = form1.FindControlR("CollectionHomePageLabel") as Label;
if (itemLabel !=null || itemLabel.Text == "True")
{
itemLabel.BackColor = System.Drawing.Color.Yellow;
}
}
Quand je lance la page, le itemLabel se trouve, et les spectacles de couleur. Mais il définit la couleur itemLabel sur la première instance de itemLabel trouvée dans la DataList. De tous les itemLabels dans la DataList, un seul aura son texte = True - et cela devrait être l'étiquette reprenant la backcolor. De plus: itemLabel récupère une colonne dans le DB appelé "CollectionHomePage" qui est un type de données vrai/faux. Je dois manquer quelque chose de simple ... Merci pour vos idées.
Hey Claudio, il ne fonctionne toujours pas correctement . Lorsque j'ai essayé votre suggestion, la page chargée sans erreur, mais l'étiquette qui a le texte défini sur True n'affichait pas la couleur de fond. Je vous remercie. – Doug
@Doug. S'il vous plaît essayez d'exécuter ce même code sur l'événement OnItemDataBound –
OUI! Maintenant ça marche. Aurait dû utiliser OnItemDataBound en premier lieu. Merci Claudio. – Doug