【问题标题】:Find a Control in Asp.net Listview Inside the Selected Item Template在选定项模板内的 Asp.net Listview 中查找控件
【发布时间】:2010-09-17 07:30:18
【问题描述】:

我正在将功能从 asp.net Gridview 转换为 Listview。在所选项目更改时的网格视图中,我将从所选行中的标签中获取一个值并将其写入网格视图之外的不同标签。

Protected Sub grdModules_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles grdModules.SelectedIndexChanged

    Dim lblModuleTitle As Label = grdModules.SelectedRow.FindControl("lblModuleTitle")
    lblCurrentModule.Text = lblModuleTitle.Text

End Sub

在 Listview 中,没有“SelectedRow”概念,而是 SelectedItem。但是,您不能对所选项目进行 findcontrol。当我尝试执行以下操作时(我得到一个空引用异常):

Protected Sub listviewModules_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles listviewModules.SelectedIndexChanged

    Dim lblModuleTitle As Label = CType(listviewModules.FindControl("lblModuleTitle"), Label)
    lblCurrentModule.Text = lblModuleTitle.Text

End Sub

有谁知道在所选项目模板中找到控件的方法吗?

【问题讨论】:

    标签: asp.net vb.net listview


    【解决方案1】:

    您在整个 ListView 上调用 FindControl,而不仅仅是所选项目。这应该有效:

    Dim lblModuleTitle As Label = CType(listviewModules.Items(listviewModules.SelectedIndex).FindControl("lblModuleTitle"), Label)
    

    【讨论】:

    • 您在语法更改后是正确的(如果您想更新您的帖子): Dim lblModuleTitle As Label = CType(listviewModules.Items(listviewModules.SelectedIndex).FindControl("lblModuleTitle"), Label)谢谢!
    • 另一件需要注意的事情:我一直在为此苦苦挣扎——确保您在 ItemTemplate 和 SelectedItem 模板中都有您要查找的项目。它不会找到它,除非它在两者中。
    • 已修复 - 很明显我通常生活在 C# 领域吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-31
    • 2011-08-07
    • 1970-01-01
    相关资源
    最近更新 更多