我正在将功能从asp.net Gridview转换为Listview。在gridview中,当所选项目发生更改时,我会从所选行中的标签中获取一个值,并将其写入gridview之外的其他标签。

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。但是,您无法对所选项目进行查找控制。当我尝试执行以下操作时(我得到一个空引用异常):

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

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

有帮助吗?

解决方案

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

Dim lblModuleTitle As Label = CType(listviewModules.Items(listviewModules.SelectedIndex).FindControl("lblModuleTitle"), Label)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top