callback from tooltip

5 posts, 0 answers
  1. Morten
    Morten avatar
    352 posts
    Member since:
    Jul 2012

    Posted 03 Jun 2008 Link to this post

    On a page I have a tooltip manager and a radgrid.
    In every grid row I add a tooltiptargetcontrol to an image.
    Image.OnClick pops up the tooltip that loads a usercontrol with data specific to the grid row.

    I would like the tooltip to reload the grid (using ajax) upon the OnClientHide event.

    Is this possible?
  2. Tervel
    Admin
    Tervel avatar
    1337 posts

    Posted 04 Jun 2008 Link to this post

    Hello Morten,

    Here is how you should approach the task:

    1. Wrap your RadGrid into a regular <asp:UpdatePanel>

    2. In the OnClientHide of the tooltip, all you need to do is "submit" the update panel, which can be done like this:
    function refreshGrid()  
                {  
                    __doPostBack("<%= RadGridUpdatePanel.ClientID %>");   
                } 


    All the best,
    Tervel
    the Telerik team

    Instantly find answers to your questions at the new Telerik Support Center
  3. Morten
    Morten avatar
    352 posts
    Member since:
    Jul 2012

    Posted 04 Jun 2008 Link to this post

    the entire page is wrapped in <telerik:RadAjaxPanel ID="rap" runat="server">.

    If I place the following code within the masterpage contentplaceholder:

    <script type="text/javascript">
    function OnClientHide(sender, eventArgs){
      __doPostBack("<%= rap.ClientID %>");
    }
    </script>

    I get the following error on page load:

    The Controls collection cannot be modified because the control contains code blocks (i.e. <% ... %>).
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

    Exception Details: System.Web.HttpException: The Controls collection cannot be modified because the control contains code blocks (i.e. <% ... %>).

    Source Error:

    An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. 

    Stack Trace:


    [HttpException (0x80004005): The Controls collection cannot be modified because the control contains code blocks (i.e. <% ... %>).]
       System.Web.UI.ControlCollection.AddAt(Int32 index, Control child) +2108046
       Telerik.Web.UI.RadAjaxControl.MoveUpdatePanel(Control initiator, Control updated) +110
       Telerik.Web.UI.RadAjaxControl.PerformRender() +418
       Telerik.Web.UI.RadAjaxControl.OnPageRender(HtmlTextWriter writer, Control page) +1222
       Telerik.Web.UI.RadAjaxControl.RenderPageInAjaxMode(HtmlTextWriter writer, Control page) +87
       System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +98
       System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +20
       System.Web.UI.Page.Render(HtmlTextWriter writer) +26
       System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +25
       System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +121
       System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +22
       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2558

    Hovering the grid's refresh button I get the following reference:
    ///__doPostBack('ctl00$cph$rg$ctl00$ctl02$ctl00$RebindGridButton','');

    couldn't I, somehow, do something like this:

    function OnClientHide(sender, eventArgs){
      __doPostBack('<%= rg.ClientID %>$RebindGridButton','');
    }

  4. Tervel
    Admin
    Tervel avatar
    1337 posts

    Posted 04 Jun 2008 Link to this post

    Hi Morten,

    This error is a general ASP.NET problem. You need to put the code somewhere on the page in a control that does not have its controls collection directly modified from the codebehind. Or you need to "output" this javascript function from the codebehind as well - forming a script string, and registering it on the page using the ScriptManager methods for adding scripts.

    Regards,
    Tervel
    the Telerik team

    Instantly find answers to your questions at the new Telerik Support Center
  5. Morten
    Morten avatar
    352 posts
    Member since:
    Jul 2012

    Posted 04 Jun 2008 Link to this post

    I got things to work by involving a hidden button, wrapping the js in a RadScriptBlock, and simulating a button click in the OnClientHide:

    <telerik:RadScriptBlock ID="RadScriptBlock1" runat="server">
      <script type="text/javascript">
      function OnClientHide(sender, eventArgs)  {
        var btn = document.getElementById('<%= btnRefresh.ClientID %>');
        if (btn){btn.click();}
      }
      </script>
    </telerik:RadScriptBlock>

    <asp:Button ID="btnRefresh" runat="server" Text="Refresh" style="visibility:hidden ;" />

      Protected Sub btnRefresh_Click(ByVal sender As Object, _
                                     ByVal e As System.EventArgs) _
                Handles btnRefresh.Click
        rg.Rebind()
      End Sub
Back to Top