BulletedList onClick не стреляет - PullRequest
       37

BulletedList onClick не стреляет

2 голосов
/ 16 августа 2010

Тьфу, это сводит меня с ума

Я пытаюсь создать динамическое меню из bulletedList, большинство пунктов меню представляют собой простые ссылки, однако кнопка выхода должна выполнить некоторый код очистки.

Я не могу на всю жизнь получить событие onclick BullettedLists для запуска. BulletedList находится внутри пользовательского элемента управления (если это имеет значение)

Есть идеи? Или - есть идеи для альтернативного, лучшего решения?

Код ниже

BulletedList

<asp:BulletedList OnClick="menu_Click" runat="server" CssClass="MainMenu" ID="loggedInMenu" DisplayMode="HyperLink"  />  

Добавление элемента

loggedInMenu.Items.Add(new ListItem("Logout", ""));

Обработчик кликов

protected void menu_Click(object sender, BulletedListEventArgs e)
{

    user.logout();
    Response.Redirect("Default.aspx");
}

1 Ответ

6 голосов
/ 16 августа 2010

Вы используете неправильный DisplayMode для вашего BulletedList элемента управления.Вы должны использовать DisplayMode из LinkButton.При использовании DisplayMode.HyperLink:

Пользователи могут щелкать ссылки для перехода на другую страницу.Вы должны указать целевой URL-адрес в качестве свойства Value отдельных элементов.

Это из Документов MSDN для этого элемента управления.(Это примерно 3/4 пути вниз по странице.)

Когда вы используете элемент управления BulletedList в режиме HyperLink, значением вашего ListItem является URL, по которому вы переходите,Поэтому элементы управления HTML вашей статической страницы будут использовать ListItem.Value в качестве атрибута href тега <a>.

Вот как выглядит HTML-разметка, когда вы используете DisplayMode из HyperLink (это простой старый HTMLякорный тег с href):

<li><a href="1">One</a></li>

Но так как вы хотите отправить обратно, вы должны установить DisplayMode вашего BulletedList элемента управления на LinkButton.Когда вы сделаете это, вы включите обратную передачу на свою страницу, и ваш обработчик событий перехватит событие.Затем вы можете обработать щелчок соответствующим образом.Аргумент события, который передается (типа BulletedListEventArgs), будет иметь свойство Index, и оно сообщит вам, по какому элементу в вашем списке была нажата кнопка.

Вот обновленный код .aspx, который я использовал:

<asp:BulletedList ID="bullet" runat="server" DisplayMode="LinkButton"
    onclick="bullet_Click">
    <asp:ListItem Text="One" Value="1">One</asp:ListItem>
</asp:BulletedList>

Все остальное такое же, кроме DisplayMode, для которого установлено LinkButton.Когда я использую это, тогда мой обработчик событий bullet_Click запускается, когда я щелкаю элемент списка.

Надеюсь, это поможет !!

...