获取用于以编程方式生成asp控件的信息(单击)

时间:2009-07-15 16:53:17

标签: asp.net sql vb.net

如何获取用于以编程方式生成asp控件的信息?

例如,我从数据库中提取了DataTable个用户对象,并将它们组织在一个页面上,列出了每个雇主直接在雇主下的雇员列表等分组。在页面上,我将每个用户的用户名列为LinkButton。当我点击其中一个员工时,我想重定向页面(这很容易)并将会话变量设置为所选用户的UserId(这似乎不那么容易)。如何将此UserId值拉回来?这些元素没有使用好的名称进行硬编码(因为它们是在for each循环中生成的)。

以下评论代码:

Dim lnkbtnPm As New LinkButton ' is my link button. '
lnkbtnPm.Text = pmDr.Item("Username") ' where pmDr is my datarow. '
lnkbtnPm.CommandArgument = pmDr.Item("UserId")     
lnkbtnPm.CommandName = "CommandNameHere"
panelToAddControlTo.Controls.Add(lnkbtnPm) 

谢谢:)

1 个答案:

答案 0 :(得分:2)

我认为您可以使用LinkBut​​ton的CommandNameCommandArgument属性。将用户ID分配为CommandArgument,将合适的字符串分配为CommandName,并将Command事件与事件处理程序挂钩:

Sub LinkButton_Command(sender As Object, e As CommandEventArgs) 
    ' e.CommandArgument will contain the user id '
End Sub

<强>更新

问题是永远不会附加事件处理程序。使用AddHandler执行此操作:

Dim lnkbtnPm As New LinkButton 
lnkbtnPm.Text = pmDr.Item("Username") ' where pmDr is my datarow. '
lnkbtnPm.CommandArgument = pmDr.Item("UserId")     
lnkbtnPm.CommandName = "CommandNameHere"
AddHandler lnkbtnPm.Command, AddressOf LinkButton_Command
panelToAddControlTo.Controls.Add(lnkbtnPm)