如何获取用于以编程方式生成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)
谢谢:)
答案 0 :(得分:2)
我认为您可以使用LinkButton的CommandName
和CommandArgument
属性。将用户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)