webForumDet fria alternativet

AJAXToolKit Dropdown extender

.NET

8 svar · 1 177 visningar · startad av Gimbo

Medlem sedan dec. 20001 626 inlägg
Frågan#1

Hej,

laddade ner AJAXCOntrolToolKit från ajax.asp.net men jag inte få kontrollen dropdown extender att fungera (http://asp.net/AJAX/AjaxControlToolkit/Samples/DropDown/DropDown.aspx):

Jag vill lägga drpdown extendern i en cell i en datagrid,,, dvs alla namn i datagriden skall ha dropdown extendern och så här har jag gjort men får det inte att fungera :@

vet egentligen inte vart någonstans jag ska lägga koden? men har nedastående kod i

void dgr_ItemDataBound(object sender, DataGridItemEventArgs e)

LinkButton lb = new LinkButton();
lb.ID = "link";
lb.Click += new EventHandler(lb_Click);
lb.Text = row["Filename"].ToString();
lb.CommandArgument = row["FilePath"].ToString();

AjaxControlToolkit.DropDownExtender drpExtender = new AjaxControlToolkit.DropDownExtender();
drpExtender.ID = "DDE";
drpExtender.TargetControlID = lb.ID;
drpExtender.DropDownControlID = drpPanel.ID;

drpExtender.Controls.Add(lb);
drpExtender.DropArrowImageUrl = "~/app_themes/blue/images/bullet_arrow_down.png";

e.Item.Cells[1].Controls.Clear();
e.Item.Cells[1].Controls.Add(drpExtender);
Medlem sedan dec. 20001 626 inlägg
#2

någon?

Medlem sedan okt. 20041 556 inlägg
#3

Men du måste väl lägga in detta

<ajaxToolkit:DropDownExtender runat="server" ID="DDE"
    TargetControlID="TextLabel" 
    DropDownControlID="DropPanel" />

i en itemtemplate.

Medlem sedan dec. 20001 626 inlägg
#4

Jag jobbar i code-behinde...
jag tror felet ligger i scriptmanagern eller för på något konstigt sätt får jag ett javascript fel på sidan som lyder:

'_behaviur' is null or not an object, dvs det känns som att scriptmanagern inte gör det den skall, eller är det jag som stirrat mig blind på scriptmanagern, och att felet kan ligga någon annanstans då man får ett javascripts fel?

ScriptManager  sm;

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);

           sm = ScriptManager.GetCurrent(this.Page);
 
    if (sm == null)
    {
        
        sm = new ScriptManager();
        sm.EnablePartialRendering = true;
 
 Scriptmangern ska komma först
        this.Page.Form.Controls.AddAt(0, sm);
}
}

skulle vara VÄLDIGt tacksam för hjälp

Medlem sedan sep. 200278 inlägg
#5

Hm, har du testat att lägga till kontrollen (lb) till cellen också?

e.Item.Cells[1].Controls.Add(lb);
innan du lägger till extendern...

Medlem sedan dec. 20001 626 inlägg
#6

skit schysst tack för hjälpen!!
fick det att funka :D för er som är intresserade så ser ni koden nedan...
en sak som inte triggas är:
pnl.Attributes["style="] = "display:none; visibility:none;";
pnl.CssClass = "ContextMenuPanel";

får inte den fina bakgrunden i dropdownen med mouseovern, och den skall dyka upp m h a ovanstående kod, men det verkar som att den inte triggas, någon som har någon aning om varför?

koden för dropdown extendern:

AjaxControlToolkit.DropDownExtender hme = new AjaxControlToolkit.DropDownExtender();
                    Panel pnl = new Panel();
                    pnl.Attributes["style="] = "display:none; visibility:none;";
                    pnl.CssClass = "ContextMenuPanel";

                    e.Item.ID = "dgvRow_" + e.Item.ItemIndex.ToString();

                    LinkButton lb1 = new LinkButton();
                    pnl.ID = "pnl" + e.Item.ItemIndex.ToString();
                    pnl.Controls.Add(lb1);
                    lb1.Text = "function 1";

                    LinkButton lb2 = new LinkButton();
                    pnl.Controls.Add(lb2);
                    lb2.Text = "function 2";

                    LinkButton lb3 = new LinkButton();
                    pnl.Controls.Add(lb3);
                    lb3.Text = "function 3";

                    //hme.PopupControlID = pnl.ID;
                    hme.DropDownControlID = pnl.ID;
                    hme.TargetControlID = e.Item.ID;
                    
                    
                    
                    e.Item.Cells[1].Controls.Clear();
                    e.Item.Cells[1].Controls.Add(lb);
                    e.Item.Cells[1].Controls.Add(hme);
                    e.Item.Cells[1].Controls.Add(pnl);
Medlem sedan sep. 2005673 inlägg
#7

Jag tror du ska skriva så här (otestat):

pnl.Style.Add("display","none")

...och visibility:hidden ska det nog vara, men har du display:none så behöver du ju inte ha med det alls.

Medlem sedan dec. 20001 626 inlägg
#8

Funkade fint med

pnl.Style.Add("display", "none");
pnl.Style.Add("visibility", "hidden");

men hur blir det med classen

pnl.CssClass = "ContextMenuPanel";

? den kommer inte ens med när jag kollar i källkoden?

Medlem sedan dec. 20001 626 inlägg
#9

löste d

pnl.Attributes.Add("class", "ContextMenuPanel");

ska d va

259 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)