Обработчик события нажатия кнопки Linkbutton не запущен

StackOverflow https://stackoverflow.com/questions/86563

Вопрос

Я создаю пользовательский выпадающий список с помощью AJAX dropdownextender.Внутри моей выпадающей панели у меня есть кнопки linkbuttons для моих опций.

<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 linkbutton, поскольку у вас не будет ссылки на элемент управления на стороне сервера.Затем вы можете обработать извлечение данных с помощью вашего метода setDDL.Кроме того, вы можете захотеть заключить строку, которую вы размещаете внутри вызова setDDL, в кавычки, потому что это вызовет проблемы со скриптом (например, не вызов метода + ошибки страницы), учитывая, что вы размещаете литеральные строковые данные без кавычек.

Другие советы

Хорошо, я использовал литералы для создания тегов привязки с onclicks на них, и это, кажется, отлично работает.Большое спасибо.

добавление, вероятно, должно выглядеть следующим образом (добавьте " вокруг строки и добавьте ;до конца инструкции javascript).

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

ИЛИ!

установите Свойство OnClientClick на кнопке linkbutton.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top