Ajax accordion problem
gmanunta81 non è online. Ultima attività: 25/06/2008 16.45.24gmanunta81
Inserito il: 15 maggio 2008 20.27
55 messaggi dal 24 mar 2008
salve a tutti
sono ormai 5 giorni che lavoro sula generazione di un menu collassabile
(5 giorni in cui ho ricevuto le peggio umiliazioni dai colleghi)
sto cercando di generare dinamicamente un (controllo.asx)menu che visualizzi prima delle tipologie di articoli e poi quando clicchi sopra una categoria
si apre il menu (nella stessa colonna) che visualizza le sottotipologie
per far cio uso gli accordion che incapsulano panel e accordionpane
gli unici due problemi sono
1) in firefox ilcontrollo non si vede bene
2) non riesco a cambiare lo stile del header quando la tipologia viene cliccata

sotto posto i codici asp.net dinamici + il CSS interessato
grazie a tutti .....come dicevo a un collega
posso sempre fare volontariato in Burundi :P

file main.aspx
.................
<uc2:menu ID="menu1" runat="server"
CSSHeader="navItem bgNavBlue"
CSSMenu="bgNavBlue"
CSSSubMenu="navItemsSubContainer"
CSSLinkContent="navItemSub"
CSSSeparator="mT9" />
................

file menu.ascx

.................................
<asp:Panel ID="CategoryPanel" runat="server" CssClass="navContainer">
</asp:Panel>
......................

file menu.asx.cs


private void AjaxMenu()
{
try
{
Category[] ArrayCategories = Categories.ToArray();

for (int elementindex = 0; elementindex < ArrayCategories.Length; elementindex++)
{
Category Element = ArrayCategories[elementindex];
AddElement(Element,false);
}

Category []ArrayStaticCategories = StaticCategory.ToArray();
for (int elementindex = 0; elementindex < ArrayStaticCategories.Length; elementindex++)
{
Category Element = ArrayStaticCategories[elementindex];
if (elementindex==0)
AddElement(Element,true);
else
AddElement(Element, false);


}
}
catch (Exception exc)
{
}
}

private void AddElement(Category Element,bool existseparator)
{
AjaxControlToolkit.Accordion CategoryAccordion = new AjaxControlToolkit.Accordion();
CategoryAccordion.ID = "Container_ID" + Element.ID;
CategoryAccordion.SelectedIndex = -1;
CategoryAccordion.RequireOpenedPane = false;

AjaxControlToolkit.AccordionPane CategoryAccordionPane = new AjaxControlToolkit.AccordionPane();

Panel CategoryHead = new Panel();
CategoryHead.ID = "HeadPanel_ID" + Element.ID;

if (existseparator)
CategoryHead.CssClass = CSSHeader + " " + CSSSeparator;
else
CategoryHead.CssClass = CSSHeader ;

HyperLink TitleCategory = new HyperLink();
TitleCategory.NavigateUrl = Element.Link;
TitleCategory.Text = Element.Name.ToUpper();

CategoryHead.Controls.Add(TitleCategory);
CategoryAccordionPane.ID = "Category_ID" + Element.ID;
CategoryAccordionPane.HeaderContainer.Controls.Add(CategoryHead);

List<Category> Temp = Element.SubCategories;

Panel ContentPanel = new Panel();
ContentPanel.ID = "CategoryContent_ID" + Element.ID;
ContentPanel.CssClass = CSSMenu;

Panel subContentPanel = new Panel();
subContentPanel.ID = "SubCategoryContent_ID" + Element.ID;
subContentPanel.CssClass = CSSSubMenu;

if (Temp != null)
{

for (int i = 0; i < Temp.Count; i++)
{
Panel Panlink = new Panel();
Panlink.ID = "Link_" + Temp[i].ID;
Panlink.CssClass = CSSLinkContent;

HyperLink sublink = new HyperLink();
sublink.Text = Temp[i].Name;
sublink.NavigateUrl = Temp[i].Link;

Panlink.Controls.Add(sublink);

subContentPanel.Controls.Add(Panlink);
}
}
ContentPanel.Controls.Add(subContentPanel);
CategoryAccordionPane.ContentContainer.Controls.Add(ContentPanel);
CategoryAccordion.Panes.Add(CategoryAccordionPane);
CategoryPanel.Controls.Add(CategoryAccordion);

}


file Main.css

..........................

/** RISORSE LEFT NAVIGATION *************************************************************************************/
.bgNavGreen {float:left;background-color:#EBF5CD;}
.bgNavGreen a:hover {color:#ffffff;background-image:none;background-color:#009933;text-decoration:none;}
.bgNavGreen a.active {display:block;color:#ffffff;width:135px;padding-top:4px;padding-left:3px;padding-right:3px;
padding-bottom:4px; background-image:none; background-color:#009933;}
.bgNavGreen .newItem a.active {width:135px;padding-top:4px;padding-left:3px;padding-right:3px;padding-bottom:4px;
background-image:url("../images/newItem.gif");background-position:125px center;
background-repeat:no-repeat;}
.bgNavGreen .navItemsSubContainer {float:left;width:141px;padding-top:5px;padding-bottom:0px;background-color:#98c296;}
.bgNavGreen .navItemSub a {float:left;width:132px;color:#ffffff;padding-left:8px;padding-top:2px;padding-bottom:3px;
background-color:#98c296;display:block;background-image:url("../images/whiteDot.gif");
background-position:left bottom;background-repeat:repeat-x;}
.bgNavGreen .navItemSub a:hover {float:left;color:#ffffff;background-color:#009933;text-decoration:none;background-image:none;}
.bgNavGreen .navItemSub a.active {float:left;width:130px;color:#ffffff;background-color:#009933;text-decoration:none;
background-image:none;}

.navItemSub {float:left;width:141px;font-size:12px;padding-bottom:5px;}
.newItem a:hover {color:#ffffff;background-image:none;text-decoration:none;background-image:url("../images/newItem.gif");
background-position:125px center;background-repeat:no-repeat;}

a.lastItem {background-image:none;}

.navRSS
{
float:left;
width:135px;
padding-top:4px;
padding-left:3px;
padding-right:3px;
padding-bottom:4px;
background-image:url("../images/greyDot.gif");
background-position:left bottom;
background-repeat:repeat-x;
}

..........................
RE: Ajax accordion problem
manuel0081 non è online. Ultima attività: 04/07/2008 16.22.16manuel0081
Inserito il: 16 maggio 2008 09.01
blogs.ugidotnet.org / 658 messaggi dal 22 feb 2006
al momento non ho tempo per verificare il codice. Prova a trasferire l'accordion sulla pagina tanto per cominciare.:

<asp:Panel...>
<cc1:Accordion ID="accordion" runat="server" RequireOpenedPane="false">
<Panes>
</Panes>
</cc1:Accordion>
</asp:Panel>

e nel code behind aggiungi i pane:

AccordionPane pane = new AccordionPane();
foreach...
{
pane.HeaderContainer.Controls.Add(...);
foreach
{
pane.ContentContainer.Controls.Add(...);
}
accordion.Panes.Add(pane);
}

salva da qualche parte il selezionato e associagli il tuo stile ogni volta :-)

Player of Age of Empires II - The Conquerors
Player of www.websoccermanager.com

Vai a:

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.


COMMUNITY
ULTIMI MESSAGGI


IN EVIDENZA
MISC
Powered by .db Forums