首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BulletedList onClick未触发

BulletedList onClick未触发
EN

Stack Overflow用户
提问于 2010-08-17 00:50:09
回答 1查看 3.6K关注 0票数 2

呃,这让我抓狂了

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

我无论如何也不能让BullettedLists onclick事件触发。BulletedList在用户控件内(如果这有区别的话)

有什么想法吗?或者-有其他更好的解决方案的想法吗?

下面的代码

BulletedList

代码语言:javascript
复制
<asp:BulletedList OnClick="menu_Click" runat="server" CssClass="MainMenu" ID="loggedInMenu" DisplayMode="HyperLink"  />  

添加元素

代码语言:javascript
复制
loggedInMenu.Items.Add(new ListItem("Logout", ""));

单击处理程序

代码语言:javascript
复制
protected void menu_Click(object sender, BulletedListEventArgs e)
{

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

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-08-17 03:41:29

您为BulletedList控件使用了错误的DisplayMode。您应该使用LinkButtonDisplayMode。当您使用DisplayMode.HyperLink

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

这是来自此控件的MSDN docs。(它大约在页面的四分之三处。)

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

下面是使用HyperLink的DisplayMode时HTML标记的样子(它是一个带有href的普通老式HTML锚标记):

代码语言:javascript
复制
<li><a href="1">One</a></li>

但是,由于您希望回发,因此应将BulletedList控件的DisplayMode设置为LinkButton。执行此操作时,将启用对页的回发,并且事件处理程序将捕获该事件。然后,您可以适当地处理单击。传入的事件参数(类型为BulletedListEventArgs)将有一个Index属性,该属性将告诉您列表中的哪一项被单击。

下面是我使用的更新后的.aspx代码:

代码语言:javascript
复制
<asp:BulletedList ID="bullet" runat="server" DisplayMode="LinkButton"
    onclick="bullet_Click">
    <asp:ListItem Text="One" Value="1">One</asp:ListItem>
</asp:BulletedList>

除了设置为LinkButtonDisplayMode之外,其他所有内容都是相同的。当我使用它时,当我单击一个列表项时,我的bullet_Click事件处理程序就会触发。

我希望这对你有帮助!

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3495348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档