change forecolor of a label in gridview [modified]
-
Hello - I want to change the forecolor of a label in a gridview I have, depending on the text in that label. I can't access the label by the ID in the code-behind to get the properties. The label is part of templatefield: <div> <asp:Label ID="lblFirstName" runat="server" Text='<%#Server.HtmlEncode(Eval("FirstName").ToString())%>'></asp:Label> </div> Thx, Laziale
modified on Monday, March 15, 2010 3:54 PM
-
Hello - I want to change the forecolor of a label in a gridview I have, depending on the text in that label. I can't access the label by the ID in the code-behind to get the properties. The label is part of templatefield: <div> <asp:Label ID="lblFirstName" runat="server" Text='<%#Server.HtmlEncode(Eval("FirstName").ToString())%>'></asp:Label> </div> Thx, Laziale
modified on Monday, March 15, 2010 3:54 PM
You wont get the label just by ID.To change the color, Just find the label in RowDataBound event of gridview and change the style there. Find the label as
Label lblFirstName= (Label)e.Item.FindControl("lblFirstName");
put this RowDataBound event and modify the style as per your requirement.
Cheers!! Brij
modified on Tuesday, March 16, 2010 12:54 AM
-
You wont get the label just by ID.To change the color, Just find the label in RowDataBound event of gridview and change the style there. Find the label as
Label lblFirstName= (Label)e.Item.FindControl("lblFirstName");
put this RowDataBound event and modify the style as per your requirement.
Cheers!! Brij
modified on Tuesday, March 16, 2010 12:54 AM
-
Hello - I want to change the forecolor of a label in a gridview I have, depending on the text in that label. I can't access the label by the ID in the code-behind to get the properties. The label is part of templatefield: <div> <asp:Label ID="lblFirstName" runat="server" Text='<%#Server.HtmlEncode(Eval("FirstName").ToString())%>'></asp:Label> </div> Thx, Laziale
modified on Monday, March 15, 2010 3:54 PM
Please Correct the formatting of your post. Its breaking the page !
Cheers ! Abhijit Codeproject MVP
-
Hello - I want to change the forecolor of a label in a gridview I have, depending on the text in that label. I can't access the label by the ID in the code-behind to get the properties. The label is part of templatefield: <div> <asp:Label ID="lblFirstName" runat="server" Text='<%#Server.HtmlEncode(Eval("FirstName").ToString())%>'></asp:Label> </div> Thx, Laziale
modified on Monday, March 15, 2010 3:54 PM
Try with this : You need to do this in
RowDataBound
Event ofGridView
.void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{Label lblFirstName= (Label)e.Item.FindControl("lblFirstName"); if(lblFirstName.Text == "MyText") lblFirstName.ForColor=mycolor; }
}
Cheers ! Abhijit Codeproject MVP
-
laziale wrote:
can you give me some example how I can do ItemDataBound event?
I guess this should be
RowDataBound
. NotItemDataBound
! Please check the answer that I have posted. Thanks !Cheers ! Abhijit Codeproject MVP
-
laziale wrote:
can you give me some example how I can do ItemDataBound event?
I guess this should be
RowDataBound
. NotItemDataBound
! Please check the answer that I have posted. Thanks !Cheers ! Abhijit Codeproject MVP
lets compromise on: For Gridview its
RowDataBound
and for DataGrid itsItemDataBound
! :) -
lets compromise on: For Gridview its
RowDataBound
and for DataGrid itsItemDataBound
! :)I don't know if he has made some changes in his original post or not. It may be because Brij asked him to use ItemDataBound :laugh:
Cheers ! Abhijit Codeproject MVP
-
I don't know if he has made some changes in his original post or not. It may be because Brij asked him to use ItemDataBound :laugh:
Cheers ! Abhijit Codeproject MVP
-
Try with this : You need to do this in
RowDataBound
Event ofGridView
.void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{Label lblFirstName= (Label)e.Item.FindControl("lblFirstName"); if(lblFirstName.Text == "MyText") lblFirstName.ForColor=mycolor; }
}
Cheers ! Abhijit Codeproject MVP
-
Thanks for all your help. I have one question, since I am trying to figure out the color of the label in the page_load event, is there anyway how I can assign the color depending from the text in that label? Thx, Laziale
laziale wrote:
since I am trying to figure out the color of the label in the page_load event, is there anyway how I can assign the color depending from the text in that label?
Why you are trying out in Page_Laod. If you want to check for each and every row of gridview, you need to check it in RowDataBound Event only.
Cheers ! Abhijit Codeproject MVP
-
laziale wrote:
since I am trying to figure out the color of the label in the page_load event, is there anyway how I can assign the color depending from the text in that label?
Why you are trying out in Page_Laod. If you want to check for each and every row of gridview, you need to check it in RowDataBound Event only.
Cheers ! Abhijit Codeproject MVP
-
cause I want to display the proper color before the site is rendered on the screen. Is there a way how I can trigger that event in the Page_Load? Thanks, Laziale
Do you understand the page life cycle? Read about it here[^]. In your page load event you want to set the DataSource property of your grid and call DataBind. Hopefully in your init method you setup an item data bound event handler. When DataBind is called, for each row being added to the gridview your data bound event handler will be called. There you set your colors. After all of that is done, Render gets called for the page which generates all the HTML from your page and code which gets sent to your user's browser.
Don't blame me. I voted for Chuck Norris.
-
Hello - I want to change the forecolor of a label in a gridview I have, depending on the text in that label. I can't access the label by the ID in the code-behind to get the properties. The label is part of templatefield: <div> <asp:Label ID="lblFirstName" runat="server" Text='<%#Server.HtmlEncode(Eval("FirstName").ToString())%>'></asp:Label> </div> Thx, Laziale
modified on Monday, March 15, 2010 3:54 PM
hi, Here is an example: gridview_OnDataBound(){ Label label1 = e.Item.FindControl("lable1") as Label; Label label2 = e.Item.FindControl("lable2") as Label; if(lable1.Text == "1") { label2.ForeColor = "red"; }else if(lable1.Text == "2"){ label2.ForeColor = "blue"; } } Hope it helps:)
-
lets compromise on: For Gridview its
RowDataBound
and for DataGrid itsItemDataBound
! :) -
cause I want to display the proper color before the site is rendered on the screen. Is there a way how I can trigger that event in the Page_Load? Thanks, Laziale
For changing the color,just change the color in rowdatabound only.It'll suffice your purpose. After pageload,you must have assigning some datasource.then, your rowdatabound event will be called for each row.In this event,you can modify the color based on the text. After it page will render and your changes will refelct on the screen. So you dont need to do this at pageload.
Cheers!! Brij
-
Try with this : You need to do this in
RowDataBound
Event ofGridView
.void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{Label lblFirstName= (Label)e.Item.FindControl("lblFirstName"); if(lblFirstName.Text == "MyText") lblFirstName.ForColor=mycolor; }
}
Cheers ! Abhijit Codeproject MVP
-
hi, Here is an example: gridview_OnDataBound(){ Label label1 = e.Item.FindControl("lable1") as Label; Label label2 = e.Item.FindControl("lable2") as Label; if(lable1.Text == "1") { label2.ForeColor = "red"; }else if(lable1.Text == "2"){ label2.ForeColor = "blue"; } } Hope it helps:)
-
nothing is happening with that one, I have the event set but its not triggered at all. The page loads without triggering that event. But thanks for your help anyway. Laziale
laziale wrote:
nothing is happening with that one, I have the event set but its not triggered at all.
Did you specified the event with gridview in aspx page ?
Cheers ! Abhijit Codeproject MVP
-
laziale wrote:
nothing is happening with that one, I have the event set but its not triggered at all.
Did you specified the event with gridview in aspx page ?
Cheers ! Abhijit Codeproject MVP
ok, there were two events for the same thing, that why it wasn't triggered. Now its triggered, but for some reason when I am stepping in to the code the label property doesn't get the text. Its left empty. Here is the code:
void gvOrderProductVariants\_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { Label lblFirstName= (Label)e.Row.FindControl("lblFirstName"); if (lblFirstame.Text.Contains("John")) lblFirstName.ForeColor = System.Drawing.Color.Red; } }
Please tell me if I am doing something wrong. Thx, Laziale