Я создаю собственный выпадающий список с помощью 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 + ")");
Я тестирую ветки с оповещениями на стороне клиента и ничего не получаю.
Edit:
Я хотел бы попробовать добавить общий якорь, но я думаю, что я могу добавить элемент в элемент управления asp.net. Также я не могу получить доступ к клиентскому разделу из кода сервера, чтобы добавить его таким образом. Я собираюсь использовать какой-то контроль с событием. Моя функция 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()");