我正在将功能从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
有谁知道在所选项目模板中找到控件的方法?
答案 0 :(得分:3)
您在整个ListView上调用FindControl,而不仅仅是所选项目。这应该有效:
Dim lblModuleTitle As Label = CType(listviewModules.Items(listviewModules.SelectedIndex).FindControl("lblModuleTitle"), Label)