Frage

Ich erstelle eine benutzerdefinierte Dropdown-Liste mit AJAX dropdownextender. In meinem Drop-Panel habe ich Linkbuttons für meine Optionen.

<asp:Label ID="ddl_Remit" runat="server" Text="Select remit address."
    Style="display: block; width: 300px; padding:2px; padding-right: 50px; font-family: Tahoma; font-size: 11px;" />
<asp:Panel ID="DropPanel" runat="server" CssClass="ContextMenuPanel" Style="display :none; visibility: hidden;">
    <asp:LinkButton runat="server" ID="Option1z" Text="451 Stinky Place Drive <br/>North Nowhere, Nebraska 20503-2343 " OnClick="OnSelect" CssClass="ContextMenuItem" />
    <asp:LinkButton runat="server" ID="Option2z" Text="451 Stinky Place Drive <br/>North Nowhere, Nebraska 20503-2343 " OnClick="OnSelect" CssClass="ContextMenuItem" />
    <asp:LinkButton runat="server" ID="Option3z" Text="451 Stinky Place Drive <br/>North Nowhere, Nebraska 20503-2343 " OnClick="OnSelect" CssClass="ContextMenuItem" />-->
</asp:Panel>
<ajaxToolkit:DropDownExtender runat="server" ID="DDE"
    TargetControlID="ddl_Remit"
    DropDownControlID="DropPanel" />

Und das funktioniert gut. Nun, was ich tun muß, ist dynamisch diese Dropdownlist füllen. Hier ist mein bester Versuch:

private void fillRemitDDL()
{
    //LinkButton Text="451 Stinky Place Drive <br/>North Nowhere, Nebraska 20503-2343 " OnClick="OnSelect" CssClass="ContextMenuItem"

    DAL_ScanlineTableAdapters.SL_GetRemitByScanlineIDTableAdapter ta = new DAL_ScanlineTableAdapters.SL_GetRemitByScanlineIDTableAdapter();
    DataTable dt = (DataTable)ta.GetData(int.Parse(this.SLID));
    if (dt.Rows.Count > 0)
    {
        Panel ddl = this.FindControl("DropPanel") as Panel;
        ddl.Controls.Clear();
        for (int x = 0; x < dt.Rows.Count; x++)
        {
            LinkButton lb = new LinkButton();
            lb.Text = dt.Rows[x]["Remit3"].ToString().Trim() + "<br />" + dt.Rows[x]["Remit4"].ToString().Trim() + "<br />" + dt.Rows[x]["RemitZip"].ToString().Trim();
            lb.CssClass = "ContextMenuItem";
            lb.Attributes.Add("onclick", "setDDL(" + lb.Text + ")");
            ddl.Controls.Add(lb);
        }
    }
}

Mein Problem ist, dass ich nicht das Ereignis Skript ausführen bekommen! Ich habe den obigen Code und versucht, so zu ersetzen

lb.Attributes.Add("onclick", "setDDL(" + lb.Text + ")");  

mit

lb.Click += new EventHandler(OnSelect);  

und auch

lb.OnClientClick = "setDDL(" + lb.Text + ")");

Ich teste die die Zweige mit Warnungen auf Client-Seite und nichts bekommen.

Edit: Ich möchte das Hinzufügen des generischen Ankers, um zu versuchen, aber ich denke, dass ich das Element zu einer asp.net Steuerelement hinzufügen kann. Ebenso wenig kann ich auf eine clientseitige div von Server-Code, dass es so hinzuzufügen. Ich werde eine Art von Kontrolle mit einem Ereignisse haben, zu verwenden. Meine setDLL Funktion geht wie folgt vor:

function setDDL(var)
{
    alert(var);
    document.getElementById('ctl00_ContentPlaceHolder1_Scanline1_ddl_Remit').innerText = var;
}

Auch nahm ich nur das String-Variable in dem Funktionsaufruf (das heißt von

lb.Attributes.Add("onclick", "setDDL(" + lb.Text + ")");   

lb.Attributes.Add("onclick", "setDDL()");
War es hilfreich?

Lösung

Ich bin mir nicht sicher, was Ihre setDDL Methode in Ihrem Skript tut, aber es sollte ausgelöst, wenn eine der Link-Taste angeklickt wird. Ich denke, man könnte besser dran, nur einen allgemeinen HTML-Anker eingefügt obwohl anstelle einer .net Linkbutton, wie Sie keinen Hinweis auf die Steuerung auf der Server-Seite haben werden. Dann können Sie die Daten excahnge mit Ihrer setDDL Methode behandeln. Außerdem sollten Sie die Zeichenfolge, die Sie platzieren in der Aufruf setDDL zitieren, da wird Skript Probleme verursachen (wie nicht die Methode + Seite Fehler Aufruf) gegeben Sie ohne Anführungszeichen Zeichenkette Daten platzieren.

Andere Tipps

Ok, habe ich Literale Anker-Tags mit onclicks auf sich zu schaffen und das scheint groß zu arbeiten. Thanks a lot.

das Add wahrscheinlich sollte wie folgt aussehen (fügen Sie die ‚‘ um die Zeichenfolge und fügen Sie ein, bis zum Ende der JavaScript-Anweisung).

lb.Attributes.Add("onclick", "setDDL('" + lb.Text + "');");

oder

setzen Sie die OnClientClick Eigenschaft auf der Linkbutton.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top