Обработчик события нажатия кнопки Linkbutton не запущен
-
01-07-2019 - |
Вопрос
Я создаю пользовательский выпадающий список с помощью 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.