PC Review


Reply
Thread Tools Rate Thread

BackColor binding does not work on postback

 
 
Dmitry Duginov
Guest
Posts: n/a
 
      28th Sep 2007
Hi,

I have the following label markup (label is inside FormView):

<asp:Label
ID="lblIndicatorReady" runat="server" Text="RE" ToolTip="Ready"
BackColor='<%#
Eval("Ready").ToString()=="True"?System.Drawing.Color.FromName("#FFFF80"):System.Drawing.Color.White
%>'
Enabled='<%# Eval("Ready") %>'
Font-Bold='<%# Eval("Ready") %>'>
</asp:Label>

I.e. late binding for the "Ready" property used to determine should the
label be
(bold, highighted and enabled) or (plain, white background, disabled)

On initial load everything works as expected (for ready items label is
colored). But on postbacks BackColor is always white for some reason.
Enabled and Bold properties are shown correctly though.

Any ideas?

Dmitry.











 
Reply With Quote
 
 
 
 
Steven Cheng[MSFT]
Guest
Posts: n/a
 
      1st Oct 2007
Hi Dmitry,

As for the ASP.NET Label DataBinding backColor color problem, I have also
performed some tests on my side and did repro the same behavior. Actually,
here is something else I also got:

The problem is not specific to FormView but seems a binding issue of the
Label control. I can get this behavior even through the following simple
routine:

** put a Label on the top level of aspx form
** and use a page variable to perform databinding against the Label control
** After click another posback button, the previous bound color
lost(Forecolor property also suffers this problem)

Currently I'll do some further research on this and will update you if
there is any new finding or information.

Sincerely,

Steven Cheng

Microsoft MSDN Online Support Lead



==================================================

Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/subscripti...ult.aspx#notif
ications.



Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial response from the community or a Microsoft Support
Engineer within 1 business day is acceptable. Please note that each follow
up response may take approximately 2 business days as the support
professional working with you may need further investigation to reach the
most efficient resolution. The offering is not appropriate for situations
that require urgent, real-time or phone-based interactions or complex
project analysis and dump analysis issues. Issues of this nature are best
handled working with a dedicated Microsoft Support Engineer by contacting
Microsoft Customer Support Services (CSS) at
http://msdn.microsoft.com/subscripti...t/default.aspx.

==================================================


This posting is provided "AS IS" with no warranties, and confers no rights.

--------------------
>From: "Dmitry Duginov" <(E-Mail Removed)>
>Subject: BackColor binding does not work on postback
>Date: Fri, 28 Sep 2007 10:10:07 -0400


>
>Hi,
>
>I have the following label markup (label is inside FormView):
>
><asp:Label
> ID="lblIndicatorReady" runat="server" Text="RE" ToolTip="Ready"
> BackColor='<%#
>Eval("Ready").ToString()=="True"?System.Drawing.Color.FromName("#FFFF80"):S

ystem.Drawing.Color.White
>%>'
> Enabled='<%# Eval("Ready") %>'
> Font-Bold='<%# Eval("Ready") %>'>
></asp:Label>
>
>I.e. late binding for the "Ready" property used to determine should the
>label be
>(bold, highighted and enabled) or (plain, white background, disabled)
>
>On initial load everything works as expected (for ready items label is
>colored). But on postbacks BackColor is always white for some reason.
>Enabled and Bold properties are shown correctly though.
>
>Any ideas?
>
>Dmitry.
>
>
>
>
>
>
>
>
>
>
>
>


 
Reply With Quote
 
Dmitry Duginov
Guest
Posts: n/a
 
      3rd Oct 2007

Hi, Steven!

Anything new? Workarounds, suggestions?

Dmitry

"Steven Cheng[MSFT]" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...

> The problem is not specific to FormView but seems a binding issue of the
> Label control. I can get this behavior even through the following simple

....
> Currently I'll do some further research on this and will update you if
> there is any new finding or information.
>
>
> This posting is provided "AS IS" with no warranties, and confers no
> rights.
>
> --------------------
>>From: "Dmitry Duginov" <(E-Mail Removed)>
>>Subject: BackColor binding does not work on postback
>>Date: Fri, 28 Sep 2007 10:10:07 -0400

>
>>
>>Hi,
>>
>>I have the following label markup (label is inside FormView):
>>
>><asp:Label
>> ID="lblIndicatorReady" runat="server" Text="RE" ToolTip="Ready"
>> BackColor='<%#
>>Eval("Ready").ToString()=="True"?System.Drawing.Color.FromName("#FFFF80"):S

> ystem.Drawing.Color.White
>>%>'
>> Enabled='<%# Eval("Ready") %>'
>> Font-Bold='<%# Eval("Ready") %>'>
>></asp:Label>
>>
>>I.e. late binding for the "Ready" property used to determine should the
>>label be
>>(bold, highighted and enabled) or (plain, white background, disabled)
>>
>>On initial load everything works as expected (for ready items label is
>>colored). But on postbacks BackColor is always white for some reason.
>>Enabled and Bold properties are shown correctly though.
>>
>>Any ideas?
>>
>>Dmitry.
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>

>



 
Reply With Quote
 
Steven Cheng[MSFT]
Guest
Posts: n/a
 
      4th Oct 2007
Thanks for your followup Dmitry,

I'm still contacting some other ASP.NET engineers on this issue so as to
definitely confirm this issue.

For workarounds, currently what I have got is a possible means through
programmrtically update the TextBox's Color property through "PreRender"
event. The "PreRender" event is the latest event before the control being
rendered. Therefore, you can register this event for the textbox and detect
its value(through Text property) and programmaticlaly set its BackColor(or
other decorate properties...) at that time. e.g.

==============
protected void TextBox1_PreRender(object sender, EventArgs e)
{
TextBox txt = sender as TextBox;

if (txt.Text == ".....")
{
txt.BackColor = Color.Yellow;
}
else
{
txt.BackColor = Color.Maroon;
}
}
==============

In addition, by some futher testing, in some C# web site projects, I found
the problem is not always reproable. Therefore, I also suggest you to test
it in different projects and pages(you can use TextBox on page's top level
or inside a FormView). It would be helpful that if you can give me a
definite steps that can constantly repro the behavior.

Sincerely,

Steven Cheng

Microsoft MSDN Online Support Lead


This posting is provided "AS IS" with no warranties, and confers no rights.

--------------------
>From: "Dmitry Duginov" <(E-Mail Removed)>
>References: <#(E-Mail Removed)>

<(E-Mail Removed)>
>Subject: Re: BackColor binding does not work on postback
>Date: Wed, 3 Oct 2007 16:42:26 -0400
>
>
>Hi, Steven!
>
>Anything new? Workarounds, suggestions?
>
>Dmitry
>
>"Steven Cheng[MSFT]" <(E-Mail Removed)> wrote in message
>news:(E-Mail Removed)...
>
>> The problem is not specific to FormView but seems a binding issue of the
>> Label control. I can get this behavior even through the following simple

>...
>> Currently I'll do some further research on this and will update you if
>> there is any new finding or information.
>>
>>
>> This posting is provided "AS IS" with no warranties, and confers no
>> rights.
>>
>> --------------------
>>>From: "Dmitry Duginov" <(E-Mail Removed)>
>>>Subject: BackColor binding does not work on postback
>>>Date: Fri, 28 Sep 2007 10:10:07 -0400

>>
>>>
>>>Hi,
>>>
>>>I have the following label markup (label is inside FormView):
>>>
>>><asp:Label
>>> ID="lblIndicatorReady" runat="server" Text="RE" ToolTip="Ready"
>>> BackColor='<%#
>>>Eval("Ready").ToString()=="True"?System.Drawing.Color.FromName("#FFFF80")

:S
>> ystem.Drawing.Color.White
>>>%>'
>>> Enabled='<%# Eval("Ready") %>'
>>> Font-Bold='<%# Eval("Ready") %>'>
>>></asp:Label>
>>>
>>>I.e. late binding for the "Ready" property used to determine should the
>>>label be
>>>(bold, highighted and enabled) or (plain, white background, disabled)
>>>
>>>On initial load everything works as expected (for ready items label is
>>>colored). But on postbacks BackColor is always white for some reason.
>>>Enabled and Bold properties are shown correctly though.
>>>
>>>Any ideas?
>>>
>>>Dmitry.
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>

>>

>
>
>


 
Reply With Quote
 
Dmitry Duginov
Guest
Posts: n/a
 
      5th Oct 2007

"Steven Cheng[MSFT]" <(E-Mail Removed)> wrote in message
news:ep9%(E-Mail Removed)...
> Thanks for your followup Dmitry,
>
> I'm still contacting some other ASP.NET engineers on this issue so as to
> definitely confirm this issue.
>
> For workarounds, currently what I have got is a possible means through
> programmrtically update the TextBox's Color property through "PreRender"
> event. The "PreRender" event is the latest event before the control being
> rendered. Therefore, you can register this event for the textbox and
> detect
> its value(through Text property) and programmaticlaly set its BackColor(or
> other decorate properties...) at that time. e.g.


Sorry, Steven, but

- the issue is with the Label control, not a textbox
- highlighting has nothing to do with the value of its Text property, it is
bound to the property of a business object

Regards,
Dmitry

> ==============
> protected void TextBox1_PreRender(object sender, EventArgs e)
> {
> TextBox txt = sender as TextBox;
>
> if (txt.Text == ".....")
> {
> txt.BackColor = Color.Yellow;
> }
> else
> {
> txt.BackColor = Color.Maroon;
> }
> }
> ==============
>
> In addition, by some futher testing, in some C# web site projects, I found
> the problem is not always reproable. Therefore, I also suggest you to test
> it in different projects and pages(you can use TextBox on page's top level
> or inside a FormView). It would be helpful that if you can give me a
> definite steps that can constantly repro the behavior.
>
> Sincerely,
>
> Steven Cheng
>
> Microsoft MSDN Online Support Lead
>
>
> This posting is provided "AS IS" with no warranties, and confers no
> rights.
>
> --------------------
>>From: "Dmitry Duginov" <(E-Mail Removed)>
>>References: <#(E-Mail Removed)>

> <(E-Mail Removed)>
>>Subject: Re: BackColor binding does not work on postback
>>Date: Wed, 3 Oct 2007 16:42:26 -0400
>>
>>
>>Hi, Steven!
>>
>>Anything new? Workarounds, suggestions?
>>
>>Dmitry
>>
>>"Steven Cheng[MSFT]" <(E-Mail Removed)> wrote in message
>>news:(E-Mail Removed)...
>>
>>> The problem is not specific to FormView but seems a binding issue of the
>>> Label control. I can get this behavior even through the following simple

>>...
>>> Currently I'll do some further research on this and will update you if
>>> there is any new finding or information.
>>>
>>>
>>> This posting is provided "AS IS" with no warranties, and confers no
>>> rights.
>>>
>>> --------------------
>>>>From: "Dmitry Duginov" <(E-Mail Removed)>
>>>>Subject: BackColor binding does not work on postback
>>>>Date: Fri, 28 Sep 2007 10:10:07 -0400
>>>
>>>>
>>>>Hi,
>>>>
>>>>I have the following label markup (label is inside FormView):
>>>>
>>>><asp:Label
>>>> ID="lblIndicatorReady" runat="server" Text="RE" ToolTip="Ready"
>>>> BackColor='<%#
>>>>Eval("Ready").ToString()=="True"?System.Drawing.Color.FromName("#FFFF80")

> :S
>>> ystem.Drawing.Color.White
>>>>%>'
>>>> Enabled='<%# Eval("Ready") %>'
>>>> Font-Bold='<%# Eval("Ready") %>'>
>>>></asp:Label>
>>>>
>>>>I.e. late binding for the "Ready" property used to determine should the
>>>>label be
>>>>(bold, highighted and enabled) or (plain, white background, disabled)
>>>>
>>>>On initial load everything works as expected (for ready items label is
>>>>colored). But on postbacks BackColor is always white for some reason.
>>>>Enabled and Bold properties are shown correctly though.
>>>>
>>>>Any ideas?
>>>>
>>>>Dmitry.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>

>>
>>
>>

>



 
Reply With Quote
 
Steven Cheng[MSFT]
Guest
Posts: n/a
 
      8th Oct 2007
Hi Dmitry,

Sorry for keep you waiting.

After some further research, I got the cause of the problem. It is actually
caused by the "Color.FromName" function you used. In your original code,
you use it as below:

System.Drawing.Color.FromName("#FFFF80")

this is actually an incorrect and unsupported usage. Refer to the document
below:

#Color.FromName Method
http://msdn2.microsoft.com/en-us/lib....fromname.aspx

>>>>>>picked from the doc>>>>>

Parameters
name
A string that is the name of a predefined color. Valid names are the same
as the names of the elements of the KnownColor enumeration.
<<<<<<<<<<<<<

Therefore, if you use the "#XXXXXX" like color, it will cause the problem
when serializing the viewstate. The color is unknown to the serializer and
it store the blank color into the view state(that's why you see the color
lost on postback). One quick resolution here(if you do need to specify the
"#xxxxxx" like html color instead of a known color name or RGB value, you
can use the ColorTranslator.FromHtml() method instead. e.g.

==================
<asp:Label ID="Label1" runat="server" Text="Label"
BackColor='<%#
TestBool.ToString()=="True"?System.Drawing.ColorTranslator.FromHtml("#FFFF80
") ystem.Drawing.Color.White %>' ........./>

==================

I've tested it and it works. Hope this helps.

Sincerely,

Steven Cheng

Microsoft MSDN Online Support Lead


This posting is provided "AS IS" with no warranties, and confers no rights.


--------------------
>From: "Dmitry Duginov" <(E-Mail Removed)>
>Subject: Re: BackColor binding does not work on postback
>Date: Thu, 4 Oct 2007 19:56:54 -0400


>
>
>"Steven Cheng[MSFT]" <(E-Mail Removed)> wrote in message
>news:ep9%(E-Mail Removed)...
>> Thanks for your followup Dmitry,
>>
>> I'm still contacting some other ASP.NET engineers on this issue so as to
>> definitely confirm this issue.
>>
>> For workarounds, currently what I have got is a possible means through
>> programmrtically update the TextBox's Color property through "PreRender"
>> event. The "PreRender" event is the latest event before the control being
>> rendered. Therefore, you can register this event for the textbox and
>> detect
>> its value(through Text property) and programmaticlaly set its

BackColor(or
>> other decorate properties...) at that time. e.g.

>
>Sorry, Steven, but
>
>- the issue is with the Label control, not a textbox
>- highlighting has nothing to do with the value of its Text property, it

is
>bound to the property of a business object
>
>Regards,
>Dmitry
>
>> ==============
>> protected void TextBox1_PreRender(object sender, EventArgs e)
>> {
>> TextBox txt = sender as TextBox;
>>
>> if (txt.Text == ".....")
>> {
>> txt.BackColor = Color.Yellow;
>> }
>> else
>> {
>> txt.BackColor = Color.Maroon;
>> }
>> }
>> ==============
>>
>> In addition, by some futher testing, in some C# web site projects, I

found
>> the problem is not always reproable. Therefore, I also suggest you to

test
>> it in different projects and pages(you can use TextBox on page's top

level
>> or inside a FormView). It would be helpful that if you can give me a
>> definite steps that can constantly repro the behavior.
>>
>> Sincerely,
>>
>> Steven Cheng
>>
>> Microsoft MSDN Online Support Lead
>>
>>
>> This posting is provided "AS IS" with no warranties, and confers no
>> rights.
>>
>> --------------------
>>>From: "Dmitry Duginov" <(E-Mail Removed)>
>>>References: <#(E-Mail Removed)>

>> <(E-Mail Removed)>
>>>Subject: Re: BackColor binding does not work on postback
>>>Date: Wed, 3 Oct 2007 16:42:26 -0400
>>>
>>>
>>>Hi, Steven!
>>>
>>>Anything new? Workarounds, suggestions?
>>>
>>>Dmitry
>>>
>>>"Steven Cheng[MSFT]" <(E-Mail Removed)> wrote in message
>>>news:(E-Mail Removed)...
>>>
>>>> The problem is not specific to FormView but seems a binding issue of

the
>>>> Label control. I can get this behavior even through the following

simple
>>>...
>>>> Currently I'll do some further research on this and will update you if
>>>> there is any new finding or information.
>>>>
>>>>
>>>> This posting is provided "AS IS" with no warranties, and confers no
>>>> rights.
>>>>
>>>> --------------------
>>>>>From: "Dmitry Duginov" <(E-Mail Removed)>
>>>>>Subject: BackColor binding does not work on postback
>>>>>Date: Fri, 28 Sep 2007 10:10:07 -0400
>>>>
>>>>>
>>>>>Hi,
>>>>>
>>>>>I have the following label markup (label is inside FormView):
>>>>>
>>>>><asp:Label
>>>>> ID="lblIndicatorReady" runat="server" Text="RE" ToolTip="Ready"
>>>>> BackColor='<%#
>>>>>Eval("Ready").ToString()=="True"?System.Drawing.Color.FromName("#FFFF80

")
>> :S
>>>> ystem.Drawing.Color.White
>>>>>%>'
>>>>> Enabled='<%# Eval("Ready") %>'
>>>>> Font-Bold='<%# Eval("Ready") %>'>
>>>>></asp:Label>
>>>>>
>>>>>I.e. late binding for the "Ready" property used to determine should the
>>>>>label be
>>>>>(bold, highighted and enabled) or (plain, white background, disabled)
>>>>>
>>>>>On initial load everything works as expected (for ready items label is
>>>>>colored). But on postbacks BackColor is always white for some reason.
>>>>>Enabled and Bold properties are shown correctly though.
>>>>>
>>>>>Any ideas?
>>>>>
>>>>>Dmitry.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>
>>>
>>>

>>

>
>
>


 
Reply With Quote
 
Dmitry Duginov
Guest
Posts: n/a
 
      9th Oct 2007

"Steven Cheng[MSFT]" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> Hi Dmitry,
>
> Sorry for keep you waiting.
>
> After some further research, I got the cause of the problem. It is
> actually
> caused by the "Color.FromName" function you used. In your original code,
> you use it as below:
>
> System.Drawing.Color.FromName("#FFFF80")


> lost on postback). One quick resolution here(if you do need to specify the
> "#xxxxxx" like html color instead of a known color name or RGB value, you
> can use the ColorTranslator.FromHtml() method instead. e.g.


Thank you! It resolved the issue.

Dmitry.


 
Reply With Quote
 
Steven Cheng[MSFT]
Guest
Posts: n/a
 
      10th Oct 2007
You're welcome!

Sincerely,

Steven Cheng

Microsoft MSDN Online Support Lead


This posting is provided "AS IS" with no warranties, and confers no rights.
--------------------
>From: "Dmitry Duginov" <(E-Mail Removed)>
>References: <#(E-Mail Removed)>

<(E-Mail Removed)> <eo0no3fBIHA.91
>Subject: Re: BackColor binding does not work on postback
>Date: Tue, 9 Oct 2007 17:00:56 -0400


>
>
>"Steven Cheng[MSFT]" <(E-Mail Removed)> wrote in message
>news:(E-Mail Removed)...
>> Hi Dmitry,
>>
>> Sorry for keep you waiting.
>>
>> After some further research, I got the cause of the problem. It is
>> actually
>> caused by the "Color.FromName" function you used. In your original code,
>> you use it as below:
>>
>> System.Drawing.Color.FromName("#FFFF80")

>
>> lost on postback). One quick resolution here(if you do need to specify

the
>> "#xxxxxx" like html color instead of a known color name or RGB value, you
>> can use the ColorTranslator.FromHtml() method instead. e.g.

>
>Thank you! It resolved the issue.
>
>Dmitry.
>
>
>


 
Reply With Quote
 
 
 
Reply

Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Datagrid at sort postback how can i retrivie the sortcommand before binding? Pablo Microsoft ASP .NET 1 12th Feb 2006 03:09 AM
[2.0] Binding after postback Maury Microsoft ASP .NET 0 30th Jan 2006 04:24 PM
Binding to backcolor-property =?Utf-8?B?QmVubnk=?= Microsoft ADO .NET 0 5th Mar 2004 09:41 AM
transparency in backcolor does not work t perkins Microsoft VB .NET 1 23rd Feb 2004 06:50 PM
Binding BackColor property Igor Zhavrid Microsoft Dot NET Compact Framework 1 13th Oct 2003 11:44 PM


Features
 

Advertising
 

Newsgroups
 


All times are GMT +1. The time now is 05:44 AM.