ajax toolkit hovermenuextender problem in webpart controls....? why?

Last post 05-09-2009 1:58 PM by bcweed966. 8 replies.

Sort Posts:

  • ajax toolkit hovermenuextender problem in webpart controls....? why?

    03-28-2009, 6:54 PM
    • Member
      113 point Member
    • bcweed966
    • Member since 11-26-2006, 9:40 PM
    • Posts 655

    I cant seem to get a ajax toolkit extender to work in any web part control already existing in this project or any that I develope myself.

     even some cystome extender control I develop will not work... why?

    I always get an error:

    Extender control 'HoverMenuExtender1' is not a registered extender control. Extender controls must be registered using RegisterExtenderControl() before calling RegisterScriptDescriptors().
    Parameter name: extenderControl

    but I assure you I have been working with extender controls for long, long time and every thing is right. Also I have been working with the berhouse project for along time and I know it quite well but I never was able to put an extender control inside a webpart control on the masterpage...

     

    it seems it sometimes works but then you get the error when you change the scope from "user" to "shared" or vice versa...

     

    anybode knows anything about that?

  • Re: ajax toolkit hovermenuextender problem in webpart controls....? why?

    03-28-2009, 11:48 PM
    • Star
      10,558 point Star
    • Danny117
    • Member since 12-16-2008, 2:30 PM
    • Royal Oak Michigan USA
    • Posts 1,837

    Can't duplicate the problem. 

    I didn't have any problem entering shared state with control as webpart and hover menu extender.

     

    <%@ Control Language="VB" AutoEventWireup="false" CodeFile="WebUserControl2.ascx.vb" Inherits="WebUserControl2" %>
    <%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="cc1" %>
    <asp:ScriptManagerProxy ID="ScriptManager1" runat="server">
    </asp:ScriptManagerProxy>
    <asp:Button ID="Button1" runat="server" Text="Button" />
    <cc1:HoverMenuExtender ID="Button1_HoverMenuExtender" runat="server" 
     PopupControlID="Panel1"
        DynamicServicePath="" Enabled="True" TargetControlID="Button1">
    </cc1:HoverMenuExtender>
    <asp:Panel ID="Panel1" runat="server">
        hello world
    </asp:Panel>
    
    
    page.
    <%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
    <%@ Register src="WebUserControl.ascx" tagname="WebUserControl" tagprefix="uc1" %>
    <%@ Register src="WebUserControl2.ascx" tagname="WebUserControl2" tagprefix="uc2" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:ScriptManager ID="ScriptManager1"
            EnablePartialRendering="true"
            runat="server">
            </asp:ScriptManager>
            <asp:Login ID="Login1" runat="server">
            </asp:Login>
            <asp:Button ID="Button2" runat="server" Text="shared" />
            <asp:Button ID="Button1" runat="server" Text="Button" />
       
            <asp:WebPartManager ID="WebPartManager1" runat="server">
            </asp:WebPartManager>
            <asp:WebPartZone ID="WebPartZone1" runat="server">
                <ZoneTemplate>
                    <uc2:WebUserControl2 ID="WebUserControl21" runat="server" />
                    <uc1:WebUserControl ID="WebUserControl1" runat="server" />
                </ZoneTemplate>
            </asp:WebPartZone>
            <asp:WebPartZone ID="WebPartZone2" runat="server">
                <ZoneTemplate>
                    <uc1:WebUserControl ID="WebUserControl2" runat="server" />
                </ZoneTemplate>
            </asp:WebPartZone>
                    
        </div>
        <asp:CatalogZone ID="CatalogZone1" runat="server">
            <ZoneTemplate>
                <asp:DeclarativeCatalogPart ID="DeclarativeCatalogPart1" runat="server">
                    <WebPartsTemplate>
                        <asp:Calendar ID="Calendar1" runat="server"></asp:Calendar>
                    </WebPartsTemplate>
                </asp:DeclarativeCatalogPart>
            </ZoneTemplate>
        </asp:CatalogZone>
        </form>
    </body>
    </html>
    Good Luck



  • Re: ajax toolkit hovermenuextender problem in webpart controls....? why?

    03-29-2009, 11:49 AM
    • Member
      113 point Member
    • bcweed966
    • Member since 11-26-2006, 9:40 PM
    • Posts 655

    thank you dany,

     

    but have you tried, as I was saying, to put an extender in a webpart control in the BEERHOUSE project?

    or to create a new webpart control in the BEERHOUSE project and put it in the DeclarativeCatalogPart on the master page of the BEERHOUSE project?

     

    for example:I took the BEERHOUSE project unmodified as it comes when you download the project file, and it has a control called RssReader which implements the webpart functionality and it is in the DeclarativeCatalogPart on the master pager, and I have tried to use a hovermenuextender control in it and got that problem:

    here is the (slightly) modified RssReader while everything else in the beerhouse project is the same:

    <%@ Control Language="C#" AutoEventWireup="true" CodeFile="RssReader.ascx.cs" Inherits="MB.TheBeerHouse.UI.Controls.RssReader" %>

    <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>

    <div class="sectiontitle">

    <asp:HyperLink ID="lnkRss" runat="server" ToolTip="Get the RSS for this content">

    <asp:Image runat="server" ID="imgRss" ImageUrl="~/Images/rss.gif" AlternateText="Get RSS feed" />

    </asp:HyperLink>

    <asp:Literal runat="server" ID="lblTitle"/>

    </div>

    <asp:DataList id="dlstRss" Runat="server" EnableViewState="False">

    <ItemTemplate>

    <small><%# Eval("PubDate", "{0:d}") %></small>

    <br>

    <asp:Panel ID="Panel1" runat="server" BorderColor="#3366FF" Height="100" Width="100">

    this is a test popup panel

    </asp:Panel>

    <cc1:HoverMenuExtender ID="HoverMenuExtender1" runat="server" PopupControlID="Panel1" TargetControlID="lnkTitle">

    </cc1:HoverMenuExtender>

    <div class="sectionsubtitle"><asp:HyperLink Runat="server" ID="lnkTitle"

    NavigateUrl='<%# Eval("Link") %>' Text='<%# Eval("Title") %>' /></div>

     

    <%
    # Eval("Description") %>

    </ItemTemplate>

    </asp:DataList>

    <p style="text-align: right;"><small><asp:HyperLink Runat="server" ID="lnkMore" /></small></p>

     

    code beind

    using System;

    using System.Data;

    using System.Configuration;

    using System.Collections;

    using System.Web;

    using System.Web.Security;

    using System.Web.UI;

    using System.Web.UI.WebControls;

    using System.Web.UI.WebControls.WebParts;

    using System.Web.UI.HtmlControls;

    using System.Xml;

    using MB.TheBeerHouse.UI;

    namespace MB.TheBeerHouse.UI.Controls

    {

    public partial class RssReader : BaseWebPart

    {

    public RssReader()

    {

    this.Title = "RSS Reader";

    }

    [
    Personalizable(PersonalizationScope.User),

    WebBrowsable,

    WebDisplayName("Rss Url"),

    WebDescription("The Url of the RSS feed")]

    public string RssUrl

    {

    get { return lnkRss.NavigateUrl; }set { lnkRss.NavigateUrl = value; }

    }

    [Personalizable(PersonalizationScope.User),

    WebBrowsable,

    WebDisplayName("Header Text"),

    WebDescription("The header's text")]public string HeaderText

    {

    get { return lblTitle.Text; }

    set { lblTitle.Text = value; }

    }

    [
    Personalizable(PersonalizationScope.User),

    WebBrowsable,

    WebDisplayName("Number of columns"),

    WebDescription("The grid's number of columns")]

    public int RepeatColumns

    {

    get { return dlstRss.RepeatColumns; }set { dlstRss.RepeatColumns = value; }

    }

    [Personalizable(PersonalizationScope.User),

    WebBrowsable,

    WebDisplayName("More Url"),

    WebDescription("The Url of the link pointing to more content")]public string MoreUrl

    {

    get { return lnkMore.NavigateUrl; }

    set { lnkMore.NavigateUrl = value; }

    }

    [
    Personalizable(PersonalizationScope.User),

    WebBrowsable,

    WebDisplayName("More Text"),

    WebDescription("The text of the link pointing to more content")]

    public string MoreText

    {

    get { return lnkMore.Text; }set { lnkMore.Text = value; }

    }

    protected void Page_Load(object sender, EventArgs e)

    {

    DoBinding();

    }

    protected void Page_PreRender(object sender, EventArgs e)

    {

    DoBinding();

    }

    protected void DoBinding()

    {

    try

    {

    if (this.RssUrl.Length == 0) throw new ApplicationException("The RssUrl cannot be null.");

    // create a DataTable and fill it with the RSS data,

    // then bind it to the Repeater control

    XmlDataDocument feed = new XmlDataDocument();

    feed.Load(GetFullUrl(this.RssUrl));

    XmlNodeList posts = feed.GetElementsByTagName("item");

    DataTable table = new DataTable("Feed");

    table.Columns.Add("Title", typeof(string));

    table.Columns.Add("Description", typeof(string));

    table.Columns.Add("Link", typeof(string));

    table.Columns.Add("PubDate", typeof(DateTime));

    foreach (XmlNode post in posts)

    {

    DataRow row = table.NewRow();

    row["Title"] = post["title"].InnerText;

    row["Description"] = post["description"].InnerText.Trim();

    row["Link"] = post["link"].InnerText;

    row["PubDate"] = DateTime.Parse(post["pubDate"].InnerText);

    table.Rows.Add(row);

    }

    dlstRss.DataSource = table;

    dlstRss.DataBind();

    }

    catch (Exception)

    {

    this.Visible = false;

    }

    }

    private string GetFullUrl(string url)

    {

    if (url.StartsWith("/") || url.StartsWith("~/"))

    {

    url = (
    this.Page as BasePage).FullBaseUrl + url;url = url.Replace("~/", "");

    }

    return url;

    }

    }

    }

  • Re: ajax toolkit hovermenuextender problem in webpart controls....? why?

    03-29-2009, 8:52 PM
    • Star
      10,558 point Star
    • Danny117
    • Member since 12-16-2008, 2:30 PM
    • Royal Oak Michigan USA
    • Posts 1,837

    I figured it out you have the wrong version of the toolkit or you need the toolkit scriptmanager on your template.master.  Beerhouse is asp.net 2.0.

    However 

    Sooner or later you need to come up to vs2008 asp.net 3.5 you can try to upgrade the project and just drop a scriptmanager on template.master then the beerhouse might just come to life.  No guarantees.  Before upgrade to VS2008 make a whole computer backup.

    I use this simple ajax pattern with vs2008 asp.net 3.5

    Masterpage has a scriptmanager.

    Contentpage scriptmanagerproxy

    Controls (webparts) scriptmanagerproxy

     

     

    Good Luck



  • Re: ajax toolkit hovermenuextender problem in webpart controls....? why?

    03-30-2009, 1:39 PM
    • Member
      113 point Member
    • bcweed966
    • Member since 11-26-2006, 9:40 PM
    • Posts 655

    thank you for your reply Dany,

    I am running visual studio 2008 sp1 .net framework 3.5.

    As I said I used the unaltered version of the beerhouse as it comes from the downloade file and only added a hovewrmenu extender control in the itemtemplate of the datalist of the RssReader.aspx webpart control. Althought I had omited to say that I had also put a scriptmanager on the master page, I did say that i had used the ajaxx toolkit enough as well as the beerhouse project.

     Have you tryed as I mentioned to do the simple reproduction of my problem by using the unaltered version of the beerhouse and puting a hovermenu extender in the RssReader.ascx??

     I have been using the beer house project in full ajax with and without update pannels for 1 year on a pet project of mine www.weedbook.ca

    and now I am having trouble for the first time because I am trying to put an extender control in the itemtemplate of a datalist in one of the already existing webpart control.

    so, I have gone back to the begining, and unziped the original version of the unaltered beerhouse project to see if I had the same problem and I did..... hence my post.

    since the webpart control appears on the master page, only a scriptmanager control is needed on the master page, so here it is on my master page just under the form tag:

    <form id="Main" runat="server">

    <asp:ScriptManager ID="ScriptManager1" runat="server">

    </asp:ScriptManager>

    <div id="header">

  • Re: ajax toolkit hovermenuextender problem in webpart controls....? why?

    03-31-2009, 11:46 AM
    • Member
      113 point Member
    • bcweed966
    • Member since 11-26-2006, 9:40 PM
    • Posts 655

    oine more thing: I can drop an hoverextedner control on the master page just like that over the themselector, althought it does nothing grat it works!!!

    it is when i drop 1 in a weppart control that i put on the page that it does not work:

    <div id="themeselector">

    <asp:Panel ID="Panel1" runat="server" BorderColor="#3366FF" Height="100" Width="100">

    </asp:Panel>

    <cc1:HoverMenuExtender ID="HoverMenuExtender1" runat="server" PopupControlID="Panel1" TargetControlID="LinkButton1">

    </cc1:HoverMenuExtender>

    <asp:LinkButton ID="LinkButton1" runat="server">LinkButton</asp:LinkButton>

    <mb:ThemeSelector id="ThemeSelector1" runat="server" />

    </div>

     

  • Re: ajax toolkit hovermenuextender problem in webpart controls....? why?

    04-01-2009, 5:17 PM
    • Member
      113 point Member
    • bcweed966
    • Member since 11-26-2006, 9:40 PM
    • Posts 655

    What ever anybody says..... Try it!

     droping an hovermenuextender control in 1 of the already existing webpart control of the Beerhouse project does NOT work!!

    however I found a work around using code behind:

    this is the only way I found to do this in code behind on the ItemDatabound of the datalist:

    protected void dlstRss_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)

    {

    HyperLink lnk = (HyperLink)e.Item.FindControl("lnkTitle");

    Panel pan = (Panel)e.Item.FindControl("panel1");

    System.Text.StringBuilder sb = new System.Text.StringBuilder();

    sb.Append("Sys.Application.add_init(function() {");

    sb.Append("$create(AjaxControlToolkit.HoverMenuBehavior, {'id':'WebPartAjax" + pan.ClientID + "', 'HoverCssClass':'highlightCssClass', 'PopupPosition':4, 'popupElement':$get('" + pan.ClientID + "')}, null, null, $get('" + lnk.ClientID + "'));");

    sb.Append("});");

    ScriptManager.RegisterStartupScript(this, this.GetType(), "JSScript" + pan.ClientID, sb.ToString(), true);

     

    }

     

     

  • Re: ajax toolkit hovermenuextender problem in webpart controls....? why?

    05-08-2009, 6:38 AM
    • Member
      20 point Member
    • pasadsheetal
    • Member since 10-05-2007, 9:13 AM
    • Posts 6

    Add scriptmanager on the master page and scriptmanagerproxy on the content page (page on which your web part control is placed)

    I believe it will work Smile

  • Re: ajax toolkit hovermenuextender problem in webpart controls....? why?

    05-09-2009, 1:58 PM
    • Member
      113 point Member
    • bcweed966
    • Member since 11-26-2006, 9:40 PM
    • Posts 655

    that you beleive that it will work is useless. Have you tried doing what I described?

Page 1 of 1 (9 items)
Microsoft Communities