gh,这让我发疯

我试图从bullet项目列表建立一个动态菜单,大多数菜单项都是纯链接,但是注销按钮需要执行一些清理代码。

我一辈子都无法启动BullettedLists onclick事件。
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");
}

最佳答案

您为DisplayMode控件使用了错误的BulletedList。您应使用DisplayModeLinkButton。当您使用DisplayMode.HyperLink时:


用户可以单击链接以移至
另一页。您必须提供
目标URL作为的Value属性
单个项目。


这是来自MSDN docs的此控件。 (大约是页面底部的3/4。)

BulletedList模式下使用HyperLink控件时,ListItem的值就是您要导航到的URL。因此,您的静态页面HTML控件将使用ListItem.Value作为href标记的<a>属性。

使用超级链接的DisplayMode时,HTML标记如下所示(这是带有a href的纯老式HTML锚标记):

<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事件处理程序。

我希望这有帮助!!

关于c# - BulletedList onClick无法触发,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3495348/

10-10 06:00