Событие щелчка кнопки Link не обрабатывается - PullRequest
1 голос
/ 17 сентября 2008

Я создаю собственный выпадающий список с помощью 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()");

Ответы [ 3 ]

1 голос
/ 18 сентября 2008

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

1 голос
/ 17 сентября 2008

Я не уверен, что ваш метод setDDL делает в вашем скрипте, но он должен срабатывать, если нажата одна из кнопок ссылки. Я думаю, что вам может быть лучше, просто вставив общий HTML-якорь вместо кнопки ссылки .net, поскольку у вас не будет ссылки на элемент управления на стороне сервера. Затем вы можете обработать обмен данными с помощью метода setDDL. Кроме того, вы можете заключить в кавычки строку, которую вы помещаете внутри вызова setDDL, потому что это вызовет проблемы со скриптом (например, не вызовет метод + ошибки страницы), если вы помещаете данные буквальной строки без кавычек.

0 голосов
/ 18 сентября 2008

добавление должно выглядеть примерно так (добавьте '' вокруг строки и добавьте a; в конец инструкции javascript).

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

OR!

установить свойство OnClientClick на кнопке ссылки.

...