簡體   English   中英

鏈接按鈕單擊事件未運行處理程序

[英]Linkbutton click event not running handler

我正在使用 AJAX dropdownextender 創建自定義下拉列表。 在我的下拉面板中,我有鏈接按鈕供我選擇。

<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" />

這很有效。 現在我要做的是動態填充這個下拉列表。 這是我最好的嘗試:

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);
        }
    }
}

我的問題是我無法讓事件運行腳本! 我已經嘗試了上面的代碼以及替換

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

lb.Click += new EventHandler(OnSelect);  

並且

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

我正在客戶端使用警報測試分支,但一無所獲。

編輯:我想嘗試添加通用錨點,但我想我可以將元素添加到 asp.net 控件。 我也不能從服務器代碼訪問客戶端 div 以這種方式添加它。 我將不得不對事件使用某種控制。 我的 setDLL 函數如下:

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

另外我只是取出函數調用中的字符串變量(即從

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

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

我不確定您的 setDDL 方法在您的腳本中做了什么,但如果單擊鏈接按鈕之一,它應該會觸發。 我認為您最好插入一個通用的 html 錨點而不是 .net 鏈接按鈕,因為您將無法引用服務器端的控件。 然后您可以使用 setDDL 方法處理數據交換。 此外,您可能希望引用您在 setDDL 調用中放置的字符串,因為如果您放置的是不帶引號的文字字符串數據,則會導致腳本問題(例如不調用方法 + 頁面錯誤)。

好的,我使用 Literals 創建帶有 onclicks 的錨標記,這似乎效果很好。 非常感謝。

add 應該看起來像這樣(在字符串周圍添加 '' 並在 javascript 語句的末尾添加一個 ;)。

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

或者!

在鏈接按鈕上設置OnClientClick屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM