【发布时间】:2015-01-28 23:52:36
【问题描述】:
我正在开发一个在运行时加载 LinkButton 对象的用户控件 (ascx)。当在 Page_Load 中加载 aspx 页面时,每个 LinkButton 的数据源是 Dictionary 的一个条目,例如 ((ferrari, 2), (chevrolet, 10), (jeep, 6)) 随机排序。当用户单击 LinkButton 执行 PostBack 以查询有关该项目的附加信息的数据库。但是当执行到达事件时:
protected void objHyperLink_Click (object sender, EventArgs e)
不再是启动事件调用的同一个项目,而是一个不同的项目。如何获取启动事件的正确对象?
谢谢
【问题讨论】:
-
如果您为所有按钮分配相同的事件,
sender应该是启动事件的那个。如果需要,您可以通过DirectCast(sender As LinkButton)将其转换为LinkButton。 -
您应该在
PreInit事件中创建动态控件,而不是在Load事件中。 -
@Cᴏʀʏ 不需要
DirectCast()。 C# 可以将其与as语法一起使用。例如LinkButton btn = sender as LinkButton; -
@mason:哇,我想了一秒钟我在看 VB.NET 代码......我需要更多的咖啡!
-
问题是当某个item的click事件触发如(fiat, 20)时,执行返回到Page_Load并随机重新排列字典。当它到达事件时,objHyperLink_Click 不再对应于“fiat”,而是任何其他的,例如 (ford, 30)
标签: c# asp.net linkbutton