I have a repeater and have some labels and a button inside it. Here is my .aspx:
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="EntityDataSourceTeklifler" OnItemCommand="Repeater1_ItemCommand" OnItemDataBound="Repeater1_ItemDataBound">
<ItemTemplate>
<div class="panel panel-primary">
<div class="panel-body">
<strong>Teklif No.</strong> <asp:Label ID="lblTeklifNo" runat="server" Text='<%#Eval("TeklifId") %>'></asp:Label><br />
<strong>Teklif Tarihi:</strong> <%#Eval("TeklifTarih") %><br />
<strong>Teklifi Hazırlayan:</strong> <%#Eval("Name") %> <%#Eval("Surname") %><br />
<strong>Firma Adı:</strong> <%#Eval("FirmaAdi") %><br />
<strong>Ürünler:</strong><br />
<%#Eval("TeklifSiparis") %>
<strong>Genel Toplam:</strong> <%#Eval("TeklifTutar") %>$<br />
<strong>Not:</strong><br />
<%#Eval("TeklifNot") %><br />
<strong>Teklif Durumu:</strong> <asp:Label ForeColor="Red" ID="lblApproved" runat="server" Text='<%# CheckIfApproved(Convert.ToBoolean(Eval("Approved"))) %>'></asp:Label><br /><br />
<asp:Button ID="btnAssignApproved" runat="server" Text="Satışa Döndü Olarak İşaretle" CssClass="btn btn-primary" CommandArgument='<%# Eval("TeklifId") %>' />
</div>
</div>
</ItemTemplate>
</asp:Repeater>
And my codebehind:
protected string CheckIfApproved(bool isApproved)
{
string result;
if (isApproved)
{
result = "Satışa Dönmüştür";
}
else
{
result = "Satışa Dönmemiştir";
}
return result;
}
protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
string teklifId = e.CommandArgument.ToString();
TeklifTable teklif = entity.TeklifTable.Where(t => t.TeklifId == teklifId).FirstOrDefault();
teklif.Approved = true;
entity.SaveChanges();
Page_Load(null, EventArgs.Empty);
}
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item)
{
Label lbl = e.Item.FindControl("lblApproved") as Label;
Button btn = e.Item.FindControl("btnAssignApproved") as Button;
if (lbl.Text.Equals("Satışa Dönmüştür"))
{
btn.Visible = false;
lbl.ForeColor = System.Drawing.Color.Blue;
}
else
{
lbl.ForeColor = System.Drawing.Color.Purple;
}
}
}
As you can see my repeater changes label color and button visibility according to boolean attribute 'Approved' of my database. Approved attribute changes with the button click and there isn't any problem here. I am checking approved value if it is true or false and changes label according to it. Lastly ItemDataBound method changes label color and button visibility according to label which has been changed in checkIfApproved method.
Now, here is my problem. As you can see I defined default label color as red in .aspx. This should changed to blue or purple but SOME OF THE VALUES stays as red. That means 'Repeater1_ItemDataBound' method does not effect some of the values. Here is another interesting point: First item of repeater get effected as I want and displayed as blue or purple according to label text but second item comes red.That means second item does not get effected by this method. Third item get effected and fourth does not. This goes like this. Any ideas ?