【问题标题】:Getting information (on click) that was used to programatically generate asp controls获取用于以编程方式生成 asp 控件的信息(单击时)
【发布时间】:2009-07-15 16:53:17
【问题描述】:

如何获得用于以编程方式生成 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) 

谢谢:)

【问题讨论】:

    标签: asp.net sql vb.net


    【解决方案1】:

    我认为这就是您将使用 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)
    

    【讨论】:

    • 我已经尝试过了,但是当点击链接按钮时子程序似乎没有被调用。是否有可能以编程方式添加链接按钮没有赋予它 runat="server" 属性?
    • 如何添加 LinkBut​​ton 控件?您是否将事件处理程序附加到它们?
    • Dim lnkbtnPm As New LinkBut​​ton 是我的链接按钮。 lnkbtnPm.Text = pmDr.Item("Username") 其中 pmDr 是我的数据行。 lnkbtnPm.CommandArgument = pmDr.Item("UserId") lnkbtnPm.CommandName = "CommandNameHere" panelToAddControlTo.Controls.Add(lnkbtnPm)
    • 这比我希望的要丑得多。希望它仍然清晰易读。也许我没有附加事件处理程序?
    • 这太棒了。非常感谢你的帮助。我唯一的最后一个问题是我不能使用 PostBackUrl 属性(它在调用事件之前回发)。有没有你知道的替代品?这是正确的,所以我现在接受它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    • 2015-10-29
    • 2017-01-06
    • 1970-01-01
    • 2010-11-16
    • 1970-01-01
    相关资源
    最近更新 更多