Tam Versiyonu Görüntüle: Ajaxcontrol toolkit accordion menu problemi.

vustan
10.06.2008, 11:48
Ben yaptığım sitede menu olarak ajax accordion control kullanmak istiyorum. Menu elemanlarını bir veritabanından çekicem. Bazı menulerin altmenuleri de var. Alt menuler contentcontainer içinde olacak. Yani alt menu yoksa accordionun header bölümüne tıklayınca ilgili sayfaya gidilecek; varsa headerın altında content bölümü açılacak alt muler orada görüntülenecek böylece ilgili bölüme gidilebilinecek. Bunun için uygun kodları internette buldum ama çalışmadı. Yani hata vermiyor ama hiç birşey de görüntülenmiyor. Sayfada kullandığım kodları da ekliyorum. Yardımcı olabilirseniz sevinirim.

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Data.OleDb;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using AjaxControlToolkit;

public partial class dersmenudeneme : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
RituelClass cl = new RituelClass();
string yol = cl.yol;
OleDbConnection baglan = new OleDbConnection(yol);
string SorguDersler = "select * from tblmenu where menuId=0";
OleDbDataAdapter oddaDersler = new OleDbDataAdapter(SorguDersler, baglan);
DataTable dtDersler = new DataTable();
oddaDersler.Fill(dtDersler);
Accordion accDersler = new Accordion();
foreach (DataRow dr in dtDersler.Rows)
{
int Dersid = Convert.ToInt16(dr["Id"]);
OleDbConnection baglan2 = new OleDbConnection(yol);
string SorguAltDesler = "select * from tblmenu where menuId=" + Dersid + "";
OleDbDataAdapter oddaAltDersler = new OleDbDataAdapter(SorguAltDesler, baglan2);
DataTable dtAltdersler = new DataTable();
oddaAltDersler.Fill(dtAltdersler);
if (dtAltdersler.Rows.Count == 0)
{
string adres = dr["menu"].ToString();
LinkButton lb = new LinkButton();
lb.ID = "lb" + Dersid.ToString();
lb.Text = dr["menuad"].ToString();
lb.PostBackUrl = "default.aspx?sayfa=" + adres;
AccordionPane paneDersmenu = new AccordionPane();
paneDersmenu.HeaderContainer.Controls.Add(lb);
accDersler.Panes.Add(paneDersmenu);

}
else
{
AccordionPane paneDersmenu = new AccordionPane();
paneDersmenu.HeaderContainer.Controls.Add(new LiteralControl(dr["menuad"].ToString()));
foreach (DataRow drAlt in dtAltdersler.Rows)
{
int DersAltid = Convert.ToInt16(dr["Id"]);
string adresAlt = drAlt["menu"].ToString();
LinkButton lbAlt = new LinkButton();
lbAlt.ID = "lbAlt" + DersAltid.ToString();
lbAlt.Text = drAlt["menuad"].ToString();
lbAlt.PostBackUrl = "default.aspx?sayfa" + adresAlt;
paneDersmenu.ContentContainer.Controls.Add(lbAlt);
}
accDersler.Panes.Add(paneDersmenu);
}
}
}
}

Gürkan Alkan
18.12.2008, 17:03
Source'da gerekli düzenlemeleri yapın, kendiniz daha sade yaparsınız. Detaylı bakamayacağım kodunuza ama hiç fikriniz yok ise direkt resmi sitedeki anlatımı koyuyorum.

<ajaxToolkit:Accordion
    ID="MyAccordion"
    runat="Server"
    SelectedIndex="0"
    HeaderCssClass="accordionHeader"
    HeaderSelectedCssClass="accordionHeaderSelected"
    ContentCssClass="accordionContent"
    AutoSize="None"
    FadeTransitions="true"
    TransitionDuration="250"
    FramesPerSecond="40"
    RequireOpenedPane="false"
    SuppressHeaderPostbacks="true">
    <Panes>
        <ajaxToolkit:AccordionPane
            HeaderCssClass="accordionHeader"
            HeaderSelectedCssClass="accordionHeaderSelected"
            ContentCssClass="accordionContent">
            <Header> . . . </Header>
            <Content> . . . </Content>
        </ajaxToolkit:AccordionPane>       
        .
        .
        .
    </Panes>            
    <HeaderTemplate>...</HeaderTemplate>
    <ContentTemplate>...</ContentTemplate>
</ajaxToolkit:Accordion>



SelectedIndex - The AccordionPane to be initially visible
HeaderCssClass - Name of şe CSS class to use for şe headers. This can be eişer applied to şe Accordion as a default for all AccordionPanes, or an individual AccordionPane.
HeaderSelectedCssClass - Name of şe CSS class to use for şe selected header. This can be eişer applied to şe Accordion as a default for all AccordionPanes, or an individual AccordionPane.
ContentCssClass - Name of şe CSS class to use for şe content. This can be eişer applied to şe Accordion as a default for all AccordionPanes, or an individual AccordionPane.
FadeTransitions - True to use şe fading transition effect, false for standard transitions.
TransitionDuration - Number of milliseconds to animate şe transitions
FramesPerSecond - Number of frames per second used in şe transition animations
AutoSize - Restrict şe growş of şe Accordion. The values of şe AutoSize enumeration are described above.
RequireOpenedPane - Prevent closing şe currently opened pane when its header is clicked (which ensures one pane is always open). The default value is true.
SuppressHeaderPostbacks - Prevent şe client-side click handlers of elements inside a header from firing (şis is especially useful when you want to include hyperlinks in your headers for accessibility)
Panes - Collection of AccordionPane controls
HeaderTemplate - The Header template contains şe markup şat should be used for an pane's header when databinding
ContentTemplate - The Content template contains şe markup şat should be used for a pane's content when databinding
DataSource - The data source to use. DataBind() must be called.
DataSourceID - The ID of şe data source to use.
DataMember - The member to bind to when using a DataSourceID


Kolay gelsin.Gürkan Alkan2008-12-18 17:04:43