2008-10-15 62 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