[Mono-bugs] [Bug 658278] New: Ajaxified control nested in another ajaxified control does not update

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Wed Dec 8 11:35:49 EST 2010


https://bugzilla.novell.com/show_bug.cgi?id=658278

https://bugzilla.novell.com/show_bug.cgi?id=658278#c0


           Summary: Ajaxified control nested in another ajaxified control
                    does not update
    Classification: Mono
           Product: Mono: Class Libraries
           Version: SVN
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: Sys.Web
        AssignedTo: mhabersack at novell.com
        ReportedBy: jmilillo at aviorcomputing.com
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---
           Blocker: ---


Created an attachment (id=403961)
 --> (http://bugzilla.novell.com/attachment.cgi?id=403961)
Nested Ajax VS Project

User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.3)
Gecko/20100401 Firefox/3.6.3 ( .NET CLR 3.5.30729; .NET4.0E)

Given a page with a RadTabStrip and a RadMultiPage, the tabstrip is set to
update the multipage via RadAjaxManager in Default.  The multipage contains a
user control, which itself contains a button and a label.  The button is set to
change the text of the label and update it via RadAjaxProxy.

Clicking on the button causes the whole multipage to refresh, which is not the
desired behavior, because RadAjaxManager creates updatepanels with
ChildrenAsTriggers=true by default.  Setting ChildrenAsTriggers=false for the
multipage *should* allow the label only to be updated.  However, nothing is
updated in this case, though the label text does get changed (noticed while
stepping through code).  The inner updatepanel is not showing in the response
viewed in Firebug, like it does for .Net.

Should a child updatepanel be considered a "child" if it's parent is set to
ChildrenAsTrigger=false?

I was able to get the desired behavior by changing UpdatePanel's RenderChildren
method to not only check for ParentPanel != null but to also check
ParentPanel.ChildrenAsTriggers when trying to determine whether or not to call
ScriptManager.WriteCallbackPanel.  I don't know if this is a complete solution,
but seemed to fix my problem.

if (sb.Length > 0) {
  if (ParentPanel != null && ParentPanel.ChildrenAsTriggers)
    writer.Write (sb.ToString ());
  else
    ScriptManager.WriteCallbackPanel (responseOutput, this, sb);
}

I also noticed that the updatepanels in the response where listed in the exact
opposite order form .Net.  Don't know if that is relevant. 

Reproducible: Always

Steps to Reproduce:
1. Click on button "Update multipage label only" at bottom of page
Actual Results:  
No update happens.

Expected Results:  
Label at bottom of page with starting text "Multipage label before update"
should have changed to "Changed by multipage button (solo)"

Other buttons and one other label are supplied to test other scenarios.  

The label/button combo at the top of the page will show ajax working correctly
outside of the multipage.  

The first button at the bottom called "Updates outer label only" will show a
nested control correctly updating a control outside of the multipage.

The last button at the bottom called "Updates both labels" will show the outer
label being updated correctly, while the nested label does not.

-- 
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.


More information about the mono-bugs mailing list