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
。您应使用DisplayMode
的LinkButton
。当您使用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/