呃,这让我抓狂了
我试图建立一个动态菜单从一个bulletedList,大多数菜单项是纯链接,但注销按钮需要执行一些清理代码。
我无论如何也不能让BullettedLists onclick事件触发。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");
}发布于 2010-08-17 03:41:29
您为BulletedList控件使用了错误的DisplayMode。您应该使用LinkButton的DisplayMode。当您使用DisplayMode.HyperLink时
用户可以单击链接以移动到另一个页面。必须提供目标URL作为单个项的Value属性。
这是来自此控件的MSDN docs。(它大约在页面的四分之三处。)
当您在HyperLink模式下使用BulletedList控件时,ListItem的值就是您导航到的URL。因此,静态页面HTML控件将使用ListItem.Value作为<a>标记的href属性。
下面是使用HyperLink的DisplayMode时HTML标记的样子(它是一个带有href的普通老式HTML锚标记):
<li><a href="1">One</a></li>但是,由于您希望回发,因此应将BulletedList控件的DisplayMode设置为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>除了设置为LinkButton的DisplayMode之外,其他所有内容都是相同的。当我使用它时,当我单击一个列表项时,我的bullet_Click事件处理程序就会触发。
我希望这对你有帮助!
https://stackoverflow.com/questions/3495348
复制相似问题