ASP.NET上的多个链接/按钮的单个事件处理程序

时间:2011-03-03 16:11:01

标签: asp.net event-handling

我有一个下拉列表,其中包含一组名称。我的整个名单都非常大(超过2,000个)所以我想把下拉列表中的名字配对那些以相同字母开头的名字。

要做到这一点,我希望在同一行上有26个链接,每个字母对应一个字母..

A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z

用户点击他们感兴趣的字母并获取名称列表的存储过程的想法被重新执行,只抓取那些以点击的字母开头的名称,然后生成的数据集被反弹到下拉列表。

令我烦恼的是如何处理创建处理用户“点击”链接所需的所有“点击事件”。 我可以创建26个不同的事件处理程序,每个链接一个,但我必须相信有一种更简单的方式我没有看到

此处的表格演示是一个链接的点击事件,字母“A”......

      Protected Sub lnkLetterA_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lnkLeterA.Click
        Call LoadNamesIntoDropDown("A")
      End Sub

有没有办法创建一个可以处理所有26个链接的事件处理程序?谢谢。

P.S。 C#或VB.NET的例子很好。我恰好在这种情况下使用VB.NET。

3 个答案:

答案 0 :(得分:2)

您可以重复使用相同的点击处理程序一个简单的示例

protected void HandleLinkClick(object sender, EventArgs e)
{
    HyperLink link = (HyperLink)sender;
    LoadNamesIntoDropDown(link.Text);
}

但是,您可以使用大量自动完成样式解决方案。一个免费的MS http://www.asp.net/ajax/ajaxcontroltoolkit/samples/autocomplete/autocomplete.aspx

答案 1 :(得分:1)

当然你可以有一个处理程序来统治它们。只需将所有链接的Click事件连接到同一方法即可。

您是在代码隐藏中动态创建链接,还是在设计器中创建了链接?如果在设计师中完成:

  • 选择一个链接
  • 在属性网格中,切换到事件视图
  • 在点击事件中,从下拉列表中选择您的事件处理程序
  • 重复所有链接

在事件处理程序中,使用sender参数检查单击的链接,并采取相应的行动。

答案 2 :(得分:1)

根据您的示例使用:

Protected Sub lnkLetter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lnkLeterA.Click, lnkLeterB.Click, lnkLeterC.Click //etc
        Call LoadNamesIntoDropDown(CType(sender, LinkLabel).Text)
End Sub