2008-10-15 68 views
1

我正在将功能从asp.net Gridview转换为Listview。在gridview中当选择的项目发生变化时,我会从选定行中的标签中获取一个值,并将其写入到gridview之外的其他标签。在Asp.net 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。但是,您无法对所选项目进行查找控制。当我尝试做如下(我得到一个空引用除外):

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 

有谁知道找到所选择的项目模板里的控件的方式吗?

回答

3

您在整个ListView上调用FindControl,而不是仅调用选定的项目。这应该工作:

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

你是正确的语法变化后(如果你想更新后): 昏暗lblModuleTitle作为标签= CTYPE(listviewModules.Items(listviewModules.SelectedIndex).FindControl( “lblModuleTitle”) ,Label) 谢谢! – codethrift 2008-10-15 16:35:57