【问题标题】:Can you access the ID of a Control added to an asp page in code-behind您可以在代码隐藏中访问添加到 asp 页面的控件的 ID
【发布时间】:2020-02-11 02:07:04
【问题描述】:

我正在通过代码隐藏将节点添加到 asp 中的 Treeview。添加后有没有办法获取节点的id,示例代码:

e.Node.ChildNodes.Add()

如何获取我正在添加(或添加)的节点的 ID?为了清楚起见,我正在尝试访问将在页面上的项目上并且可以由客户端代码使用的 id。

添加节点的代码sn-p:

Private Sub navTree_TreeNodePopulate(sender As Object, e As TreeNodeEventArgs) Handles navTree.TreeNodePopulate

Dim TestNode As New TreeNode TestNode.Text = "Test" e.Node.ChildNodes.Add(TestNode)

但是.add没有返回值

【问题讨论】:

    标签: asp.net code-behind


    【解决方案1】:

    在 VB 中,每个TreeNode 在其ChildNodes 属性中都有一组子节点。 Add 方法返回 void,因此这对于从后面的代码中识别新节点没有帮​​助。 Microsoft 的文档将 TreeNode 的 Value 属性描述为“用于存储有关节点的任何其他数据的非显示值,例如用于处理回发事件的数据”,并给出了使用它来存储 ID 的示例(按照下面的链接可以查看他们的示例)

    这样的事情可能适用于您的情况:

    //to add the node
    Private Sub navTree_TreeNodePopulate(sender As Object, e As TreeNodeEventArgs) Handles navTree.TreeNodePopulate
    
    Dim TestNode As New TreeNode
    TestNode.Text = "This is a test node."
    TestNode.Value= 123 //your data's ID
    e.Node.ChildNodes.Add(TestNode)
    
    //to find the node by its ID later you'll have to loop through the collection and look for `Value == 123`
    

    更多信息: https://docs.microsoft.com/en-us/dotnet/api/system.web.ui.webcontrols.treenode.value?view=netframework-4.8

    【讨论】:

    • 感谢您的信息,不幸的是,我没有对正在创建的节点使用任何数据绑定,因此node.DataItem 正在返回nothing。是否有另一种解决方法,或者我需要为其创建数据绑定?
    • 如果没有更多代码来查看添加新节点后发生的情况,我不完全确定。
    • 我没有意识到您使用的是 VB 而不是 C#,因此我更新了我的答案。
    • 我认为 webcontrol TreeNode 没有 Name 属性,这仅在 windows 控件 TreeNode 上。
    • 你又是对的。我从微软的网站上找到了一个看起来像你在这里想要完成的例子:docs.microsoft.com/en-us/dotnet/api/…我会相应地更新我上面的答案。
    猜你喜欢
    • 2013-12-01
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    • 2017-06-27
    • 1970-01-01
    相关资源
    最近更新 更多