Encuentre un control en Asp.net Listview dentro de la plantilla del elemento seleccionado

StackOverflow https://stackoverflow.com/questions/204747

  •  03-07-2019
  •  | 
  •  

Pregunta

Estoy convirtiendo la funcionalidad de una vista de cuadrícula de asp.net a una vista de lista. En la vista de cuadrícula cuando el elemento seleccionado cambió, tomaría un valor de una etiqueta en la fila seleccionada y lo escribiría en una etiqueta diferente fuera de la vista de cuadrícula.

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

En una vista de lista, no hay un " SelectedRow " concepto, pero un artículo seleccionado. Sin embargo, no puede hacer findcontrol contra el elemento seleccionado. Cuando trato de hacer lo siguiente (obtengo una excepción de referencia nula):

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

¿Alguien sabe cómo encontrar un control dentro de la plantilla del elemento seleccionado?

¿Fue útil?

Solución

Está llamando a FindControl en todo el ListView, en lugar de solo el elemento seleccionado. Esto debería funcionar:

Dim lblModuleTitle As Label = CType(listviewModules.Items(listviewModules.SelectedIndex).FindControl("lblModuleTitle"), Label)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top